Java提供了一個操作Set、List和Map等集合的工具類:Collections,該工具類里 提供了大量方法對集合元素進行排序、查詢和修改等操作,還提供了對集合對象實現同步控制等方法。
一、 排序操作
如下示例:
public class CollectionsSort {public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);list.add(6); System.out.println(list);//reverse 反轉 指定列表中元素的順序。Collections.reverse(list);System.out.println("倒序:"+list);//shuffle 使用默認隨機源對指定列表進行置換。Collections.shuffle(list);System.out.println("隨機順序:"+list);//sort 根據元素的自然順序 對指定列表按升序進行排序。Collections.sort(list);System.out.println("自然順序排序:"+list);//自定義排序:Collections.sort(list,new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2-01; //從大到小}});System.out.println("自定義排序:"+list);//swap 在指定列表的指定位置處交換元素。Collections.swap(list, 1, 5);System.out.println("交換元素:"+list);//rotate 根據指定的距離輪換指定列表中的元素。Collections.sort(list);System.out.println(list);Collections.rotate(list, 2);System.out.println("輪換1:"+list);Collections.rotate(list, -2);System.out.println("輪換2"+list); }
}
執行結果如下:
二、查找和替換操作
public class CollectionsSearch {public static void main(String[] args) {List<Integer> list = new ArrayList<>(); list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);list.add(6);list.add(7);list.add(8);list.add(9);list.add(8);list.add(8);list.add(8); System.out.println(list);//使用二分搜索法搜索指定列表,以獲得指定對象。System.out.println("---二分搜索法---");System.out.println(Collections.binarySearch(list, 6));//max minSystem.out.println("---max/min---");System.out.println(Collections.max(list));System.out.println(Collections.min(list)); //frequency 返回元素在列表中出現的次數System.out.println("---frequency---");System.out.println(Collections.frequency(list, 2));System.out.println("---列表---");System.out.println(list);//返回指定源列表中第一次出現指定目標列表的起始位置;如果沒有出現這樣的列表,則返回 -1。System.out.println("—
indexOfSubList/lastIndexOfSubList---");List<Integer> list2 = new ArrayList<>();list2.add(7);list2.add(8);list2.add(9);//返回指定源列表中第一次出現指定目標列表的起始位置;如果沒有出現這樣的列表,則返回 -1。System.out.println(Collections.indexOfSubList(list, list2));//返回指定源列表中最后一次出現指定目標列表的起始位置;如果沒有出現這樣的列表,則返回 -1。System.out.println(Collections.lastIndexOfSubList(list, list2));//replaceAll 使用另一個值替換列表中出現的所有某一指定值。System.out.println("---replaceAll---");Collections.replaceAll(list, 8, 10);System.out.println(list);//fill 使用指定元素替換指定列表中的所有元素。 填充所有System.out.println("---fill---");Collections.fill(list, 2);System.out.println(list);}
}
結果如下:
查找和替換操作參考:
三.同步控制
Collections類中提供了多個 synchronized…()方法,這些方法可以將指定集合包裝成線 程同步(線程安全)的集合,從而可以解決多線程并發訪問集合時的線程安全問題。 Java中常用的集合框架中的實現類 ArrayList、Linkedlist、 HashSet、TreeSet、 HashMap和TreeMap都是線程不安全的。如果有多個線程訪問它們,而且有超過一個 的線程試圖修改它們,則存在線程安全的問題。 Collections提供了多個類方法可以把 它們包裝成線程同步的集合。
public class SynchronizedDemo {public static void main(String[] args) { List<String>list = Collections.synchronizedList(new ArrayList<String>());Set<String>set = Collections.synchronizedSet(new HashSet<String>());Map<Integer, String>map = Collections.synchronizedMap(new HashMap<Integer, String>()); }
}