操作集合的工具類Collection
阿新 • • 發佈:2018-11-19
概述
該工具類中提供了大量的方法對集合進行排序、查詢和修改等,還提供了將集合物件設定為不可變、對集合物件實現同步控制等方法。
排序操作
void reverse(List list)
:反轉指定List集合中的元素順序;void shuffle(List list)
:打亂集合元素原有的順序;void sort(List list)
:根據元素的自然順序對集合進行升序排序;void sort(List list,Comparator c)
:根據Comparator產生的順序對List集合元素進行排序;void swap(List list,int i,int j)
void rotate(List list,int distabce)
:當distabce為正數時,將distabce之後的元素移到集合前面,當為負數時,將distabce之前的元素移到集合後面。
ArrayList array = new ArrayList(); array.add(2); array.add(5); array.add(-3); array.add(10); array.add(-6); System.out.println(array);//[2, 5, -3, 10, -6] //反轉 Collections.reverse(array); System.out.println(array);//[-6, 10, -3, 5, 2] //按自然順序排序 Collections.sort(array); System.out.println(array);//[-6, -3, 2, 5, 10] //隨機排序 Collections.shuffle(array); System.out.println(array);//[5, -3, -6, 10, 2]
查詢與替換
package org.westos.Mydemo; import sun.plugin.javascript.navig.Link; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class SearchAndInset { public static void main(String[] args) { ArrayList<Integer> nums = new ArrayList<>(); nums.add(2); nums.add(-13); nums.add(2); nums.add(-4); nums.add(7); nums.add(4); nums.add(3); nums.add(2); //使用二分搜尋法搜尋指定的List集合元素,前提條件是集合處於有序狀態 // Collections.sort(nums); // System.out.println(nums);//[-13, -4, 2, 2, 2, 3, 4, 7] // System.out.println(Collections.binarySearch(nums,3));//5 //返回給定集合中的最大值和最小值 System.out.println(Collections.max(nums));//7 System.out.println(Collections.min(nums));//13 //Object max(Collection coll,Comparator comp)根據Comparator指定的順序獲取最大值 //Object min(Collection coll,Comparator comp)根據Comparator指定的順序獲取最小值 //使用指定元素替換指定List集合中的所有元素 // Collections.fill(nums,000); // System.out.println(nums);//[0, 0, 0, 0, 0, 0, 0, 0] //返回指定集合中指定元素出現的次數 System.out.println(Collections.frequency(nums,2));//3 //返回子list在父list中第一次出現的位置索引,如果沒有出現則返回-1 // System.out.println(nums);[2, -13, 2, -4, 7, 4, 3, 2] List<Integer> list = nums.subList(3, 5); System.out.println(Collections.indexOfSubList(nums,list));//3 //返回子list在父list中最後一次出現的位置索引,如果沒有出現則返回-1 List<Integer> list1 = nums.subList(2,3); System.out.println(Collections.lastIndexOfSubList(nums,list1));//7 //使用一個新的newVal替換List物件的所有舊值 Collections.replaceAll(nums,2,11); System.out.println(nums);//[11, -13, 11, -4, 7, 4, 3, 11] } }
設定不可變集合
Collections提供瞭如下三個類方法來返回一個不可變集合:
emptyXxx()
:返回一個空的、不可變的集合物件,此處的集合可以是List、也可以是SortedSet、Set還可以是Map、hashMap;singletonXxx()
返回一個只包含指定物件的、不可變的集合物件。unmodifibleXxx()
:返回指定集合物件的不可變檢視。
List list = Collections.emptyList();
Set set = Collections.singleton("java");
HashMap scores = new HashMap<>();
scores.put("chinese",80);
scores.put("English",500);
Map map = Collections.unmodifiableMap(scores);
//試圖向不可變集合中新增元素
list.add("test1");
set.add("test2");
map.put("test3",30);
//執行之後引發UnsupportedOperationException異常