collection介面下有兩個常用的子介面:list和set
list儲存元素時是有序的,允許重複元素 如:
list.add("bbb");
list.add("ccc");
list.add("ccc");
list.add("aaa");
輸出:[bbb, ccc,ccc, aaa]
list介面的實現類:arraylist、linkedlist、vector
arraylist,底層實現是object陣列結構,該實現不是同步的,
也就是說多個執行緒同時操作的時候是不安全的
list list = new arraylist();
可以新增乙個null元素,也可以多個
list.add("aaa");
list.add(null);
輸出:[aaa, null]
一旦建立arraylist物件,會採用預設長度10個大小
隨著不斷新增資料,超過10個長度會遞增:
規律:第一次擴容後的大小:10+10>>1(15)
第二次擴容後的大小:15+15>>1(22)
第三次擴容後的大小:22+22>>1(33)
....
伴隨著容量的增加,會把原來的資料複製到新容量的陣列中
每一次擴容都會重新複製一次
這樣在新增比較多的資料的時候就顯得麻煩,而且效率比較低
可以通過建立arraylist list = new arraylist();
list.ensurecapacity(1000000);
的同時進行指定擴容大小,那麼就好像一開始指定開闢多大的
空間,沒達到那麼大的空間就不會進行擴容了,就省去不斷擴容不斷複製陣列了
linkedlist,底層實現是鍊錶結構,該實現不是同步的
也就是說多個執行緒同時操作的時候是不安全的
list list = new linkedlist();
可以向首尾新增或刪除元素
相比arraylist的使用,linkedlist的增刪操作快,查詢慢
vector,底層實現是object陣列結構,該實現是同步的,(這是與arraylist的區別之處)
一旦建立vector物件,會採用預設長度10個大小
隨著不斷新增資料,超過10個長度會遞增:
規律:第一次擴容後的大小:10+10(20)
第二次擴容後的大小:20+20(40)
第三次擴容後的大小:40+40(80)
....
伴隨擴容也會將資料複製到新容量大小的陣列中
可以通過vector vect = new vector();
vect.ensurecapacity(1000000);
設定一開始的容量
set儲存元素時是無序的(注意我們所說的有序無序是根據新增順序和取出順序的是否一致),
不允許重複元素,可以有乙個null元素(新增了重複的元素,只保留乙個)
如:set set = new hashset();
set.add("bbb");
set.add("aaa");
set.add("ddd");
set.add("ccc");
set.add(null);
輸出:[null, aaa, ddd, ccc, bbb]
set介面的實現類:hashset、linkedhashset、treeset
hashset,底層採用的是hashmap結構,此實現不是同步的
linkedhashset,底層採用的是linkedhashmap結構,此實現不是同步的
set set = new linkedhashset();
set.add("bbb");
set.add("aaa");
set.add("ddd");
set.add("ccc");
set.add(null);
輸出:[bbb, aaa, ddd, ccc, null]
注意這裡:與 hashset 的不同之處在於,linkedhashset維護著乙個執行於所有條目的雙重鏈結列表。
此鏈結列表定義了迭代順序,即按照將元素插入到 set 中的順序(插入順序)進行迭代
所以這輸出的順序和新增的順序一致
treeset,底層採用的是treemap結構,此實現不是同步的
注意了:它不能新增null元素,否則執行出現空指標異常
預設按照自然排序
treeset ts = new treeset();
ts.add("bbb");
ts.add("aaa");
ts.add("ddd");
ts.add("ccc");
輸出:[aaa, bbb, ccc, ddd]
在建立的時候可傳遞自己的比較器
Collection集合簡單了解
collection集合 集合 是一種容器,長度可變 陣列 長度不可變的一種容器 集合與陣列的區別 陣列 一旦初始化,長度不可改變 可以存放引用型別或基本型別的資料 同一種陣列,只能存放同一型別的資料 集合 長度隨時可以改變 只可以存放引用型別的資料 同一種集合可以存放多種型別的資料 常用的功能 新...
集合 Collection集合總結
list有序,可重複 abstractlist 父類abstractcollection抽象類,實現了list介面 arraylist 父類abstractlist 底層資料結構是陣列,查詢快,增刪慢。執行緒不安全,不同步,效率高 vector 父類abstractlist 底層資料結構是陣列,查詢...
Collection集合,List集合
一 collection集合 a collection 集合 單身漢集合 list 特點 有序,可重複,有索引 arraylist 重點掌握 linkedlist 儲存的元素不可重複,訪問順序一致 set 無序,元素不可重複,元素無索引 hashset 重點掌握 linkedhashset tree...