Java集合框架:Collections工具类
歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計與實踐原理》和《RabbitMQ實戰(zhàn)指南》,同時歡迎關(guān)注筆者的微信公眾號:朱小廝的博客。
歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/java/java-collection-collections/
java.util.Collections工具類提供很多有用的方法,使得程序猿操作集合類的時候更加的方便容易,這些方法都是靜態(tài)的。整個Collections工具類源碼差不多有4000行,我們針對一些典型的方法進行闡述。
1. 調(diào)用一個空List,Set,Map
public static final List EMPTY_LIST = new EmptyList<>(); public static final Map EMPTY_MAP = new EmptyMap<>(); public static final Set EMPTY_SET = new EmptySet<>();2. addAll
public static <T> boolean addAll(Collection<? super T> c, T… elements):向指定的集合c中加入特定的一些元素elements
案例2-1:
運行結(jié)果:
[s2, s4, s1, s3] [s2, s4, s1, s3, s5, s7, null, s9]3. binarySearch
public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
利用二分法在指定的集合中查找元素,至于Comparable以及Comparator相信看過前面一些列博文的朋友應(yīng)該很清楚了,具體的也可以參考《Comparable與Comparator淺析》
4. sort
public static <T extends Comparable<? super T>> void sort(List<T> list) 需要泛型T類本身支持Comparable接口
public static <T> void sort(List<T> list, Comparator<? super T> c)
具體舉例可以參考《Comparable與Comparator淺析》
5. shuffle
public static void shuffle(List<?> list)
public static void shuffle(List<?> list, Random rnd)
混排。混排算法所做的正好與sort相反:它打亂在一個List中可能有的任何排列的蹤跡。也就是說,基于隨機源的輸入重排list,這樣的排列具有相同的可能性(假設(shè)隨機源是公正的)。這個算法在實現(xiàn)一個碰運氣的Game中非常有用。
案例5-1:
每次運行結(jié)果都不同。
6. 反轉(zhuǎn)
有關(guān)反轉(zhuǎn)主要有這三個方法:
舉幾個案例來說明下用法。
案例6-1:
運行結(jié)果:
[s1, s2, s3, s4] [s4, s3, s2, s1]案例6-2:
List<String> list = new ArrayList<>();list.add("s1");list.add("s2");list.add("s3");System.out.println(list);Comparator<String> comp = Collections.reverseOrder();Collections.sort(list,comp);System.out.println(list);運行結(jié)果:(同上)
案例6-3:
運行結(jié)果:
[s1, s2, s3, s4] [s4, s3, s2, s1] [s1, s2, s3, s4]如果把Comparator<String> comp2 = Collections.reverseOrder(comp);改成Comparator<String> comp2 = Collections.reverseOrder(null);運行結(jié)果:
[s1, s2, s3, s4] [s4, s3, s2, s1] [s4, s3, s2, s1]7.synchronized系列
確保所封裝的集合線程安全(強同步)
8. unmodifiable系列
確保所封裝的集合不能修改。
9.其他
Collections工具類的功能不止上面這些,還有諸如fill(), rotate(), max(), min()等方法,不可能一下子就能全部記住,使用的時候多查查API即可。
參考資料:
歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/java/java-collection-collections/
歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計與實踐原理》和《RabbitMQ實戰(zhàn)指南》,同時歡迎關(guān)注筆者的微信公眾號:朱小廝的博客。
總結(jié)
以上是生活随笔為你收集整理的Java集合框架:Collections工具类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java集合框架:Arrays工具类
- 下一篇: Java集合框架:总结