Java —— 集合工具類(Collections 類)

Alex_McAvoy發表於2018-10-23

【概述】

Collections 類是一個操作 List、Set、Map 等集合的工具類,其提供了一系列靜態方法對集合元素進行排序、查詢、修改等操作,還提供了對集合物件設定不可變、對集合物件實現同步控制等方法。

【排序操作】

1.reverse(List list) 方法

reverse(List list) 方法用於反轉 List 內元素順序

List list=new ArrayList();
list.add(123);
list.add(45);
list.add(111);
list.add(12);
System.out.println(list);//結果:[123, 45, 111, 12]

Collections.reverse(list);
System.out.println(list);//結果:[12, 111, 45, 123]

2.shuffle(List list) 方法

shuffle(List list) 方法用於對 List 內元素進行隨機排序

List list=new ArrayList();
list.add(123);
list.add(45);
list.add(111);
list.add(12);
System.out.println(list);//結果:[123, 45, 111, 12]

Collections.shuffle(list);
System.out.println(list);//結果:[111, 45, 12, 123]  每次結果都不同

3.sort(List list) 方法

sort(List list) 方法根據元素的自然順序對指定 List 集合元素按升序排序

List list=new ArrayList();
list.add(123);
list.add(45);
list.add(111);
list.add(12);
System.out.println(list);//結果:[123, 45, 111, 12]

Collections.sort(list);
System.out.println(list);//結果:[12, 45, 111, 123]

4.sort(List list,Comparator) 方法

sort(List list,Comparator) 方法根據指定的 Comparator 產生的順序對 List 集合元素進行排序

List list=new ArrayList();
list.add(123);
list.add(45);
list.add(111);
list.add(12);
System.out.println(list);//結果為:[123, 45, 111, 12]

Collections.sort(list,new Comparator<Integer>() {
    @Override
    public int compare(Integer a,Integer b) {
	    if(a<b)
	    	return 1;
	    else if(a>b)
	    	return -1;
	    else
		return 0;
    }
});
System.out.println(list);//結果為:[123, 111, 45, 12]

5.swap(List list,int a,int b) 方法

swap(List list,int a,int b) 方法將指定 list 集合中的 i 處元素和 j 處元素進行交換

List list=new ArrayList();
list.add(123);
list.add(45);
list.add(111);
list.add(12);
System.out.println(list);//結果:[123, 45, 111, 12]

Collections.swap(list,0,2);
System.out.println(list);//結果:[111, 45, 123, 12]

【查詢替換操作】

1.max(Collection) 方法

max(Collection) 方法根據元素自然順序,返回給定集合中的最大元素

List list=new ArrayList();
list.add(123);
list.add(45);
list.add(111);
list.add(12);
		
Object obj=Collections.max(list);
System.out.println(obj);//結果:123

除 max(Collection) 方法外,還有 max(Collection,Comparator) 方法根據 Comparator 指定的順序,返回給定集合中的最大元素

2.min(Collection) 方法

min(Collection) 方法根據元素自然順序,返回給定集合中的最小元素

List list=new ArrayList();
list.add(123);
list.add(45);
list.add(111);
list.add(12);
		
Object obj=Collections.min(list);
System.out.println(obj);//結果:12

除 min(Collection) 方法外,min(Collecttion,Comparator) 方法根據 Comparator 指定的順序,返回給定集合中的最小元素

3.frequency(Collection,Object) 方法

frequency(Collection,Object) 方法返回指定集合中指定元素出現的次數

List list=new ArrayList();
list.add(123);
list.add(45);
list.add(111);
list.add(12);
		
int cnt=Collections.frequency(list,123);
System.out.println(cnt);//結果:1

4.copy(List dest,List src) 方法

copy(List dest,List src) 方法將 src 中的內容複製到 dest 中,前提是 src 的長度要大於 dest 的長度

List list=new ArrayList();
list.add(123);
list.add(45);
list.add(111);
list.add(12);
		
List newList=new ArrayList();
newList.add(1);
newList.add(2);
newList.add(3);
Collections.copy(list,newList);
		
System.out.println(list);//結果:[1, 2, 3, 12]
System.out.println(newList);//結果:[1, 2, 3]

5.replaceAll(List list,Object oldVal,Object newVal) 方法

replaceAll(List list,Object oldVal,Object newVal) 方法使用新值 newVal 替換當前 List 物件的所有舊值 oldVal

List list=new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(1);
list.add(2);
list.add(2);
		
System.out.println(list);//結果:[1, 2, 3, 1, 2, 2]
Collections.replaceAll(list,2,22);
System.out.println(list);//結果:[1, 22, 3, 1, 22, 22]

【同步控制】

Collections 類中提供了多個 synchronizedXXX() 方法,該方法可使將指定集合包裝成執行緒同步的集合,從而解決多執行緒併發訪問集合時的執行緒安全問題。

例如:

List list=new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(1);
list.add(2);
list.add(2);
		
List newList=Collections.synchronizedList(list);//執行緒安全

 

相關文章