ArrayList類和LinkedList類複習拾遺

  1. ArrayList和LinkedList是List接口兩種比較流行的實現方式。

  2. ArrayList類提供了List ADT的一種可增長數組的實現,他的優點是對於get和set方法的調用話費常數時間(即O(N)),缺點是新插入項和現有項的刪除代價昂貴,除非變動在ArrayList末端進行。

  3. LinkedList類提供了List ADT的雙向鏈表的實現,LinkedList的優點在於新插入項和現有項的刪除的開銷很小,在表的前端進行刪除和添加都是常數的時間(O(N))。他的缺點是不容易索引,因此使用get方法的代價很大。
  4. 實例代碼:
//不管是ArrayList還是LinkedList,此方法的運行時間都是O(N)
//add每次都是在表的末端進行
public static void test1(List<Integer> l1,int N){
    l1.clear();
    for(int i=0;i<N.i++){
    l1.add(i);
    }
}
//對LinkedList運行時間爲O(N),但是對於ArrayList運行時間爲O(N²)
public static void test2(List<Integer> l1,int N){
    l1.clear();
    for(int i=0;i<N.i++){
    l1.add(0,i);
    }
}
//對ArrayList運行時間爲O(N),但是對於LinkedList運行時間爲O(N²)
public static void test3(List<Integer> l1){
    int sum = 0;
    for(int i=0;i<l1.size().i++){
        sum += l1.get(i);   
    }
}
//對LinkedList運行時間爲O(N),但是對於ArrayList運行時間爲O(N²)
public static void test4(List<Integer> l1){
    Iterator<Integer> i1 = l1.iterator();
    while(i1.hasNext()){
        if(i1.next()%2==0)
            i1.remove();
        }
    }
  1. 附自定義ArrayList和LinkedList代碼地址
    代碼來源《數據結構與算法分析Java語音描述》
發佈了55 篇原創文章 · 獲贊 15 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章