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