collection集合的簡單使用

2021-06-26 10:02:57 字數 2379 閱讀 2916

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...