1-自己動手編寫ArrayList集合
阿新 • • 發佈:2018-10-09
pen true 越界 入門學習 empty urn lastindex 入門 當前
學習集合的原理,這是一個很簡單的代碼,沒有索引下標越界判斷,異常處理等,不夠健壯,後面會繼續更新完善代碼.....
只是入門學習一下
package my; /*** * 自己動手編寫一個ArrayList類 * @author 劉詩華 * */ public class ArrayList { //集合默認初始化長度為10個元素 private final static int DEFAULT_CAPACITY = 10; //當前集合中存儲了多少個元素 private int size=0; //存儲對象容器 privateObject[] 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(); } }
1-自己動手編寫ArrayList集合