天天看點

java collections介紹_Java collections使用介紹

1. 工具類collections用于操作集合類,如List,Set,常用方法有:

1) 排序(Sort)

使用sort方法可以根據元素的自然順序 對指定清單按升序進行排序。清單中的所有元素都必須實作 Comparable 接口。此清單内的所有元素都必須是使用指定比較器可互相比較的

double array[] = {112, 111, 23, 456, 231 };

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

list.add(new Double(array[i]));

}

Collections.sort(list);

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

System.out.println(li.get(i));

}

//結果:112,111,23,456,231

2) 混排(Shuffling)

混排算法所做的正好與 sort 相反: 它打亂在一個 List 中可能有的任何排列的蹤迹。也就是說,基于随機源的輸入重排該 List,這樣的排列具有相同的可能性(假設随機源是公正的)。這個算法在實作一個碰運氣的遊戲中是非常有用的。例如,它可被用來混排代表一副牌的 Card 對象的一個 List .另外,在生成測試案例時,它也是十分有用的。

Collections.Shuffling(list)

double array[] = {112, 111, 23, 456, 231 };

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

list.add(new Double(array[i]));

}

Collections.shuffle(list);

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

System.out.println(li.get(i));

}

//結果:112,111,23,456,231

3) 反轉(Reverse)

使用Reverse方法可以根據元素的自然順序 對指定清單按降序進行排序。

Collections.reverse(list)

double array[] = {112, 111, 23, 456, 231 };

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

list.add(new Double(array[i]));

}

Collections. reverse (list);

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

System.out.println(li.get(i));

}

//結果:231,456,23,111,112

4) 替換所有的元素(Fill)

使用指定元素替換指定清單中的所有元素。

String str[] = {"dd","aa","bb","cc","ee"};

for(int j=0;j

li.add(new String(str[j]));

}

Collections.fill(li,"aaa");

for (int i = 0; i < li.size(); i++) {

System.out.println("list[" + i + "]=" + li.get(i));

}

//結果:aaa,aaa,aaa,aaa,aaa

5) 拷貝(Copy)

用兩個參數,一個目标 List 和一個源 List, 将源的元素拷貝到目标,并覆寫它的内容。目标 List 至少與源一樣長。如果它更長,則在目标 List 中的剩餘元素不受影響。

Collections.copy(list,li): 後面一個參數是目标清單 ,前一個是源清單

double array[] = {112, 111, 23, 456, 231 };

List list = new ArrayList();

List li = new ArrayList();

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

list.add(new Double(array[i]));

}

double arr[] = {1131,333};

String str[] = {"dd","aa","bb","cc","ee"};

for(int j=0;j

li.add(new Double(arr[j]));

}

Collections.copy(list,li);

for (int i = 0; i

System.out.println("list[" + i + "]=" + list.get(i));

}

//結果:1131,333,23,456,231

6) 傳回Collections中最小元素(min)

根據指定比較器産生的順序,傳回給定 collection 的最小元素。collection 中的所有元素都必須是通過指定比較器可互相比較的

Collections.min(list)

double array[] = {112, 111, 23, 456, 231 };

List list = new ArrayList();

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

list.add(new Double(array[i]));

}

Collections.min(list);

for (int i = 0; i

System.out.println("list[" + i + "]=" + list.get(i));

}

//結果:23

7) 傳回Collections中最大元素(max)

根據指定比較器産生的順序,傳回給定 collection 的最大元素。collection 中的所有元素都必須是通過指定比較器可互相比較的

Collections.max(list)

double array[] = {112, 111, 23, 456, 231 };

List list = new ArrayList();

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

list.add(new Double(array[i]));

}

Collections.max(list);

for (int i = 0; i

System.out.println("list[" + i + "]=" + list.get(i));

}

//結果:456

8) lastIndexOfSubList

傳回指定源清單中最後一次出現指定目标清單的起始位置,即按從後到前的順序傳回子List在父List中的索引位置。

int count = Collections.lastIndexOfSubList(list,li);

double array[] = {112, 111, 23, 456, 231 };

List list = new ArrayList();

List li = new ArrayList();

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

list.add(new Double(array[i]));

}

double arr[] = {111};

String str[] = {"dd","aa","bb","cc","ee"};

for(int j=0;j

li.add(new Double(arr[j]));

}

Int locations = Collections. lastIndexOfSubList (list,li);

System.out.println(“===”+ locations);

//結果 3

9) IndexOfSubList

傳回指定源清單中第一次出現指定目标清單的起始位置

int count = Collections.indexOfSubList(list,li);

double array[] = {112, 111, 23, 456, 231 };

List list = new ArrayList();

List li = new ArrayList();

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

list.add(new Double(array[i]));

}

double arr[] = {111};

String str[] = {"dd","aa","bb","cc","ee"};

for(int j=0;j

li.add(new Double(arr[j]));

}

Int locations = Collections.indexOfSubList(list,li);

System.out.println(“===”+ locations);

//結果 1

10) Rotate

根據指定的距離循環移動指定清單中的元素

Collections.rotate(list,-1);

如果是負數,則正向移動,正數則方向移動

double array[] = {112, 111, 23, 456, 231 };

List list = new ArrayList();

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

list.add(new Double(array[i]));

}

Collections.rotate(list,-1);

for (int i = 0; i

System.out.println("list[" + i + "]=" + list.get(i));

}

//結果:111,23,456,231,112

11)static int binarySearch(List list,Object key)

使用二分搜尋查找key對象的索引值,因為使用的二分查找,是以前提是必須有序。

12)static Object max(Collection coll)

根據元素自然順序,傳回集合中的最大元素

13)static Object max(Collection coll,Compare comp)

根據Comparator指定的順序,傳回給定集合中的最小元素

14)static Object min(Collection coll)

根據元素自然順序,傳回集合中的最大元素

15)static Object min(Collection coll,Compare comp)

根據Comparator指定的順序,傳回給定集合中的最小元素

16)static void fill(List list,Object obj)

使用指定元素替換指定集合中的所有元素

17)static int frequency(Collection c,Object o)

傳回指定元素在集合中出現在次數

18)static int indexOfSubList(List source, List target)

傳回子List對象在父List對象中第一次出現的位置索引; 如果父List中沒有出現這樣的子List,則傳回-1

19)static int lastIndexOfSubList(List source,List target)

傳回子List對象在父List對象中最後一次出現的位置索引,如果父List中沒有出現這樣的子List,剛傳回-1

20)static boolean replaceAll(List list,Object oldVal,Object newVal)

使用一個新值newVal替換List對象所有舊值oldVal

21)synchronizedXXX(new XXX)

Collections類為集合類們提供的同步控制方法

public class SynchronizedTest

{

public static void main(String[] args){

Collection collection = Collections.synchronizedCollections(new ArrayList());

List list = Collections.synchronizedList(new ArrayList());

Set s = Collections.synchronizedSet(new HashSet());

Map s = Collections.synchronizedMap(new HashMap()):

}

}

22)emptyXXX()

傳回一個空的、不可變的集合對象,此處的集合既可以是List,也可以是Set,還可以是Map。

23)singletonXXX()

傳回一個隻包含指定對象(隻有一個或一項元素)的、不可變的集合對象,此處集合既可以是List,也可以是Set,還可以是Map。

24)unmodificableXXX()

指定傳回集合對象的不可變視圖,此處的集合既可以是Lsit,也可以是Set,Map