1. 程式人生 > >1-自己動手編寫ArrayList集合

1-自己動手編寫ArrayList集合

pen true 越界 入門學習 empty urn lastindex 入門 當前

學習集合的原理,這是一個很簡單的代碼,沒有索引下標越界判斷,異常處理等,不夠健壯,後面會繼續更新完善代碼.....

只是入門學習一下

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(); } }

1-自己動手編寫ArrayList集合