Collection和Collections的區別

2021-07-27 22:50:52 字數 4313 閱讀 7559

一、collection

collection是集合類的頂級介面,其派生了兩個子介面set和list:

1、set:不可重複且無序

2、list:可重複且有序

list有兩個重要的實現類,arraylist和linkedlist。

arraylist:動態陣列,適用於隨機訪問,支援null,執行緒不安全;

linkedlist:雙向鍊錶,適用於批量插入和刪除操作,執行緒不安全;

所謂的執行緒安全,指的是多執行緒訪問時,採用了加鎖機制。也就是當乙個執行緒訪問某個類的某個資料時,對資料進行保護,其他執行緒不能讀取該資料,直到該執行緒讀取完。

如果想要使arraylist執行緒安全,有兩個方法:

1)使用synchronize關鍵字,一般有兩個用法。一是使用synchronize修飾方法或者靜態方法;二是使用synchronize(this);

2)使用collection.synchronizelist()。用法如下:listlist1 = collections.synchronizedlist(new arraylist());

二、collections

collections則是集合類的乙個工具類/幫助

類,其中提供了一系列靜態方法,用於對集合中元素進行排序、搜尋以及執行緒安全等各種操作。

1、排序(sort)

可以根據元素的自然順序,對指定列表按公升序進行排序。

public static void main(string args) throws interruptedexception ;

for (int i = 0; i < array.length; i++)

collections.sort(list);

for (int i = 0; i < array.length; i++)

}

執行結果:2,6,55,443,776,

2、混排(shuffle)

隨機排列。

public static void main(string args) throws interruptedexception ;

for (int i = 0; i < array.length; i++)

collections.shuffle(list);

for (int i = 0; i < array.length; i++)

}

執行結果1:443,55,776,6,2,

執行結果2:2,55,776,6,443,

3、反轉(reverse)

把原先順序逆反。

public static void main(string args) throws interruptedexception ;

for (int i = 0; i < array.length; i++)

collections.reverse(list);

for (int i = 0; i < array.length; i++)

}

執行結果;776,443,6,55,2,

4、替換所有元素(fill)

public static void main(string args) throws interruptedexception ;

for (int i = 0; i < array.length; i++)

collections.fill(list,33);

for (int i = 0; i < array.length; i++)

}

執行結果:33,33,33,33,33,

5、拷貝(copy)

將原列表的元素複製並覆蓋到新集合。

初始化時size的大小永遠預設為0,只有在進行add和remove等相關操作時,size的大小才變化。然而進行copy()時候,首先做的是將目標列表的size

和原列表的size大小進行比較,只有當目標列表的 size 大於或者等於原列表的size時才能進行拷貝,否則丟擲indexoutofbound***ception異常; 

第一種方法:

public static void main(string args) throws interruptedexception   

}  

執行結果:111,222,333,444,

第二種方法:

public static void main(string args) throws interruptedexception 

}

執行結果:111,222,333,444,

6、max和min

返回列表的最大值和最小值。

public static void main(string args) throws interruptedexception  

執行結果:

max:444

min:111

7、lastindexofsublist(原列表,目標列表)

方法呼叫返回指定目標列表的最後出現的起始位置指定源列表,或者-1,如果沒有這樣發生。

list arrlistsrc = new arraylist();

list arrlisttarget = new arraylist();

// populate two lists

arrlistsrc.add("a");

arrlistsrc.add("b");

arrlistsrc.add("c");

arrlistsrc.add("d");

arrlistsrc.add("e");

arrlisttarget.add("c");

arrlisttarget.add("d");

arrlisttarget.add("e");

// check starting position of the last occurrenc

int index = collections.lastindexofsublist(arrlistsrc, arrlisttarget);

system.out.println("starting position is: "+index);

執行結果:starting position is: 2

8、indexofsublist

返回指定源列表中第一次出現指定目標列表的起始位置

list arrlistsrc = new arraylist();

list arrlisttarget = new arraylist();

// populate two lists

arrlistsrc.add("a");

arrlistsrc.add("b");

arrlistsrc.add("c");

arrlistsrc.add("d");

arrlistsrc.add("e");

arrlisttarget.add("c");

arrlisttarget.add("d");

arrlisttarget.add("e");

// check starting position of the last occurrenc

int index = collections.indexofsublist(arrlistsrc, arrlisttarget);

system.out.println("starting position is: "+index);

9、rotate

根據指定的距離迴圈移動指定列表中的元素

public static void main(string args) throws interruptedexception ;

list list = new arraylist();

for (int i = 0; i < array.length; i++)

collections.rotate(list,2);

for (int i = 0; i system.out.println("list[" + i + "]=" + list.get(i));}}

執行結果:list[0]=456.0

list[1]=231.0

list[2]=112.0

list[3]=111.0

list[4]=23.0

Collection和Collections的區別

1.collection 是乙個集合介面,子類有list和set的集合 2.collections 是乙個幫助類,包含各種集合有關的靜態多型方法,此類不能例項化,靜態方法實現對各種集合的搜尋 排序和執行緒安全化 list 元素是有序的,可重複的 arraylist 執行緒不安全的,底層是陣列,查詢效...

容器之Collection和Map

collection 單列集合 list 有儲存順序,可重複 arraylist 陣列實現,查詢快,增刪慢 由於是陣列實現,在增和刪的時候會牽扯到陣列 增容,以及拷貝元素.所以慢。陣列是可以直接 按索引查詢,所以查詢時較快 linkedlist 鍊錶實現,增刪快,查詢慢 由於鍊錶實現,增加時只要讓前...

Collection集合框架和List集合筆記

1.什麼是集合?能夠儲存多個同型別的基本資料型別的容器我們叫陣列,那麼可以儲存多個同型別物件的容器我們就稱之為集合!什麼是collection集合框架,通過下面這個圖來說明!collection是乙個根介面,而它旗下又很多個子介面繼承了它,其中兩個最重要的子介面分別的是list和set,它們繼承了c...