java中Collection與Collections的區別

1. Collection是集合類的一個頂級接口,其直接繼承接口有List與Set java

而Collections則是集合類的一個工具類/幫助類,其中提供了一系列靜態方法,用於對集合中元素進行排序、搜索以及線程安全等各類操做。 算法

 

1) 排序(Sort)
使用sort方法能夠根據元素的天然順序 對指定列表按升序進行排序。列表中的全部元素都必須實現 Comparable 接口。此列表內的全部元素都必須是使用指定比較器可相互比較的
安全

                ArrayList list = new ArrayList();
		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(list.get(i));
		}
//結果:
23.0
111.0
112.0
231.0
456.0


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

ArrayList list = new ArrayList();
		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(list.get(i));
		}

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


3) 反轉(Reverse)
      使用Reverse方法能夠根據元素的天然順序 對指定列表按降序進行排序。
Collections.reverse(list)
測試

ArrayList list = new ArrayList();
		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(list.get(i));
		}

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

4) 替換因此的元素(Fill)
使用指定元素替換指定列表中的全部元素。
ArrayList list = new ArrayList();
		String str[] = { "dd", "aa", "bb", "cc", "ee" };
		for (int j = 0; j < str.length; j++) {
			list.add(new String(str[j]));
		}
		Collections.fill(list, "aaa");
		for (int i = 0; i < list.size(); i++) {
			System.out.println("list[" + i + "]=" + list.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 < arr.length; j++) {
			li.add(new Double(arr[j]));
		}
		Collections.copy(list, li);
		for (int i = 0; i < list.size(); i++) {
			System.out.println("list[" + i + "]=" + list.get(i));
		}

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


6) 返回Collections中最小元素(min)
根據指定比較器產生的順序,返回給定 collection 的最小元素。collection 中的全部元素都必須是經過指定比較器可相互比較的
Collections.min(list)
ArrayList list = new ArrayList();
		double array[] = {112, 111, 23, 456, 231 };  
		for (int i = 0; i < array.length; i++) { 
		list.add(new Double(array[i])); 
		} 
		System.out.println(Collections.min(list));

//結果:23 code


7) 返回Collections中最大元素(max)
根據指定比較器產生的順序,返回給定 collection 的最大元素。collection 中的全部元素都必須是經過指定比較器可相互比較的
Collections.max(list)
ArrayList list = new ArrayList();
		double array[] = {112, 111, 23, 456, 231 };  
		for (int i = 0; i < array.length; i++) { 
		list.add(new Double(array[i])); 
		} 
		System.out.println(Collections.max(list));

//結果:456 對象

8) lastIndexOfSubList
返回指定源列表中最後一次出現指定目標列表的起始位置

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

double array[] = {112, 111, 456, 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[] = {456}; 
    	for(int j=0;j<arr.length;j++){ 
    	li.add(new Double(arr[j])); 
    	} 
    	int locations = Collections. lastIndexOfSubList (list,li); 
    	System.out.println(locations);

//結果 4


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}; 
    	for(int j=0;j<arr.length;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 < list.size(); i++) {
			System.out.println("list[" + i + "]=" + list.get(i));
		}
//結果:111,23,456,231,112
相關文章
相關標籤/搜索