Chp11 11.7
《Java语言程序设计》P327
题目要求使用数组来模拟实现ArrayList的一些方法,并要求可以根据实际长度来实现数组自动增长,这里只贴出LikeArrayList.java
测试方法已经在本地写过,有点杂乱就不再贴出。
缺陷:无法实现自增长;基于String为数组类型的设计,数组若为其他类型,有些方法会不能正常工作。
改进:判断数组类型,并作出相应的解决方案的写法已经想好,实现起来应该不难,但考虑到比较繁琐费时,不再添加。
Ps.LikeArrayList方法可以改写成:
public void LikeArrayList() { Object[] ArrayLi = new Object[20]; ArrayLiLike = ArrayLi; }
似乎没有什么变化,若实现自增长,可以尝试在LikeArrayList方法上做改动,还没想好解决方案。
话说回来,如果要实现自增长,为何不直接用java.util.ArrayList?
public class LikeArrayList { private Object[] ArrayLiLike = new Object[20]; public void LikeArrayList() { } public void add(Object n){ int m =0; for (int i = 0; i < ArrayLiLike.length; i++) { if(ArrayLiLike[i] == null){ m = i; break; } } ArrayLiLike[m] = n; } public void add(int p , Object n){ ArrayLiLike[p] = n; } public void clear(){ for (int i = 0; i < ArrayLiLike.length; i++) { ArrayLiLike[i] = null; } } public boolean contains(Object h){ boolean c = false; for (int i = 0; i < ArrayLiLike.length; i++) { if (ArrayLiLike[i] == h) { c = true; } } return c; } public Object get(int b){ return ArrayLiLike[b]; } public int indexOf(Object w){ int a = 0; for (int i = 0; i < ArrayLiLike.length; i++) { if(ArrayLiLike[i] == w){ a = i; break; } } return a; } public boolean isEmpty(){ boolean is = true; for (int i = 0; i < ArrayLiLike.length; i++) { if(ArrayLiLike[i] != null){ is = false; break; } } return is; } public int lastIndexOf(Object w){ int a = 0; for (int i = 0; i < ArrayLiLike.length; i++) { if(ArrayLiLike[i] == w){ a = i; continue; } } return a; } public boolean remove(Object re){ boolean in = false; for (int i = 0; i < ArrayLiLike.length; i++) { if(ArrayLiLike[i] == re){ in = true; ArrayLiLike[i] = null; break; } } return in; } public int size(){ return ArrayLiLike.length+1; } public boolean remove(int re){ boolean in = false; if (ArrayLiLike[re] != null){ in = true; ArrayLiLike[re] = null; }else{ in = false; } return in; } public Object set(int p, Object o){ ArrayLiLike[p] = o; return ArrayLiLike[p]; } public String toString(){ String s = new String(); for (int i = 0; i < ArrayLiLike.length; i++) { s += ArrayLiLike[i] + " "; } return s; } }
Chp11 11.7的更多相关文章
- 地区sql
/*Navicat MySQL Data Transfer Source Server : localhostSource Server Version : 50136Source Host : lo ...
- WinForm 天猫2013双11自动抢红包【源码下载】
1. 正确获取红包流程 2. 软件介绍 2.1 效果图: 2.2 功能介绍 2.2.1 账号登录 页面开始时,会载入这个网站:https://login.taobao.com/member/login ...
- C++11特性——变量部分(using类型别名、constexpr常量表达式、auto类型推断、nullptr空指针等)
#include <iostream> using namespace std; int main() { using cullptr = const unsigned long long ...
- CSS垂直居中的11种实现方式
今天是邓呆呆球衣退役的日子,在这个颇具纪念意义的日子里我写下自己的第一篇博客,还望前辈们多多提携,多多指教! 接下来,就进入正文,来说说关于垂直居中的事.(以下这11种垂直居中的实现方式均为笔者在日常 ...
- C++ 11 多线程--线程管理
说到多线程编程,那么就不得不提并行和并发,多线程是实现并发(并行)的一种手段.并行是指两个或多个独立的操作同时进行.注意这里是同时进行,区别于并发,在一个时间段内执行多个操作.在单核时代,多个线程是并 ...
- CSharpGL(11)用C#直接编写GLSL程序
CSharpGL(11)用C#直接编写GLSL程序 +BIT祝威+悄悄在此留下版了个权的信息说: 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharp ...
- ABP(现代ASP.NET样板开发框架)系列之11、ABP领域层——仓储(Repositories)
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之11.ABP领域层——仓储(Repositories) ABP是“ASP.NET Boilerplate Proj ...
- C++11 shared_ptr 智能指针 的使用,避免内存泄露
多线程程序经常会遇到在某个线程A创建了一个对象,这个对象需要在线程B使用, 在没有shared_ptr时,因为线程A,B结束时间不确定,即在A或B线程先释放这个对象都有可能造成另一个线程崩溃, 所以为 ...
- C++11网络编程
Handy是一个简洁优雅的C++11网络库,适用于linux与Mac平台.十行代码即可完成一个完整的网络服务器. 下面是echo服务器的代码: #include <handy/handy.h&g ...
随机推荐
- Oracle中Merge into用法总结
MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执 ...
- 抛弃msvcrtXX库
对于极致要求体积的程序来说.抛弃Msvcrt里的函数是必要的.(尤其是msvcrtXX库)因为要使用mscvrt中的函数,就需要带上相对来 说,不能容忍的几kb的,vcrt初始化函数,包围在我们的Wi ...
- Homebrew安装及使用
简介 Homebrew官网:http://brew.sh/index_zh-cn.html Homebrew是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,相当于linux ...
- WPF 调用WinForm控件
WPF可以使用WindowsFormsHost控件做为容器去显示WinForm控件,类似的用法网上到处都是,就是拖一个WindowsFormsHost控件winHost1到WPF页面上,让后设置win ...
- IOS UITableView移除底部空白行
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
- Java泛型中的? super T语法
? super T 语法将泛型类限制为所有T的超类(包括T自身),但只能用于参数中,不可以在返回值用加以限定.如果不加以限定,假设某个函数头为? super Manager get()由于编译器不知道 ...
- Request 请求页面的地址路径获取
Request.ApplicationPath: /testweb Request.CurrentExecutionFilePath: /testweb/default.aspx Request.Fi ...
- 对于java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I错误解决
在J2EE框架下开发web网站,这种问题经常遇到,只要我们网上搜一下,就可以看到很多版本的,我整理一下: 第一种可能性解决:看看我的项目:主要 是里面的Structs 1.3 (structs 2)和 ...
- POJ 3683 Priest John's Busiest Day (2-SAT)
题意:有n对新人要在同一天结婚.结婚时间为Ti到Di,这里有时长为Si的一个仪式需要神父出席.神父可以在Ti-(Ti+Si)这段时间出席也可以在(Di-Si)-Si这段时间.问神父能否出席所有仪式,如 ...
- C++类内存布局图(成员函数和成员变量分开讨论)
一.成员函数 成员函数可以被看作是类作用域的全局函数,不在对象分配的空间里,只有虚函数才会在类对象里有一个指针,存放虚函数的地址等相关信息. 成员函数的地址,编译期就已确定,并静态绑定或动态的绑定在对 ...