1-自己动手编写ArrayList集合
学习集合的原理,这是一个很简单的代码,没有索引下标越界判断,异常处理等,不够健壮,后面会继续更新完善代码.....
只是入门学习一下
package my; /*** * 自己动手编写一个ArrayList类 * @author 刘诗华 * */ public class ArrayList { //集合默认初始化长度为10个元素 private final static int DEFAULT_CAPACITY = 10; //当前集合中存储了多少个元素 private int size=0; //存储对象容器 private Object[] ele=null; //无参数构造器 public ArrayList() { this(DEFAULT_CAPACITY); } //带参数构造器 public ArrayList(int initialCapacity) { ele=new Object[initialCapacity]; } //添加元素 public void add(Object e) { ele[size]=e; size++; } //获取指定索引元素 public Object get(int index) { return ele[index]; } //获取元素第一次在集合出现的索引位置 public int indexOf(Object o) { for(int index=0;index<size;index++) { if(o.equals(ele[index])) return index; } return -1; } //查询元素最后一次出现的索引 public int lastIndexOf(Object o) { int len=size-1; for(int index=len;index!=-1;index--) { if(o.equals(ele[index])) return index; } return -1; } //替换元素 public void set(int index, Object element) { ele[index]=element; } //返回集合存储元素长度 public int size() { return this.size; } //判断是否为空集合 public boolean isEmpty() { return size == 0; } //清空集合所有元素 public void clear() { ele=new Object[DEFAULT_CAPACITY]; size=0; } //判断集合是否包含某个元素 public boolean contains(Object o) { int len=size-1; for(int index=len;index != -1; index--) { if(o.equals(ele[index])) return true; } return false; } //删除某个元素 public void remove(Object o) { int index=this.indexOf(o); for(int i=index;index<=size-1;index++) { ele[index]=ele[index+1]; ele[index+1]=null; size--; } } //删除指定索引位置的元素 public void remove(int index) { for(int i=index;index<=size-1;index++) { ele[index]=ele[index+1]; ele[index+1]=null; size--; } } @Override public String toString() { if(ele == null) return "null"; if(size ==0) return "[]"; StringBuilder sb=new StringBuilder(); sb.append("["); for(int index=0;index<size;index++) { sb.append(ele[index]); if(index != size-1) sb.append(","); } sb.append("]"); return sb.toString(); } }