日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Java集合框架:Collections工具类

發(fā)布時(shí)間:2024/4/11 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java集合框架:Collections工具类 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。


歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/java/java-collection-collections/

java.util.Collections工具類提供很多有用的方法,使得程序猿操作集合類的時(shí)候更加的方便容易,這些方法都是靜態(tài)的。整個(gè)Collections工具類源碼差不多有4000行,我們針對(duì)一些典型的方法進(jìn)行闡述。


1. 調(diào)用一個(gè)空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:

List<String> list = new ArrayList<>();list.add("s2");list.add("s4");list.add("s1");list.add("s3");System.out.println(list);Collections.addAll(list, "s5","s7",null,"s9");System.out.println(list);

運(yùn)行結(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相反:它打亂在一個(gè)List中可能有的任何排列的蹤跡。也就是說,基于隨機(jī)源的輸入重排list,這樣的排列具有相同的可能性(假設(shè)隨機(jī)源是公正的)。這個(gè)算法在實(shí)現(xiàn)一個(gè)碰運(yùn)氣的Game中非常有用。
案例5-1:

public static void test3(){List<String> list = new ArrayList<>();list.add("s1");list.add("s2");list.add("s3");list.add("s4");Collections.shuffle(list);System.out.println(list);}

每次運(yùn)行結(jié)果都不同。


6. 反轉(zhuǎn)

有關(guān)反轉(zhuǎn)主要有這三個(gè)方法:

  • public static void reverse(List<?> list)直接反轉(zhuǎn)集合的元素
  • public static <T> Comparator<T> reverseOrder();返回可以使集合反轉(zhuǎn)的比較器Comparator
  • public static <T> Comparator<T> reverseOrder(Comparator<T> cmp);如果cmp不為null,返回cmp的反轉(zhuǎn)的比較器,即集合的反轉(zhuǎn)的反轉(zhuǎn),最后就是沒反轉(zhuǎn)。如果cmp為null,效果等同于第二個(gè)方法.
  • 舉幾個(gè)案例來說明下用法。
    案例6-1:

    List<String> list = new ArrayList<>();list.add("s1");list.add("s2");list.add("s3");list.add("s4");System.out.println(list);Collections.reverse(list);System.out.println(list);

    運(yùn)行結(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);

    運(yùn)行結(jié)果:(同上)
    案例6-3:

    List<String> list = new ArrayList<>();list.add("s1");list.add("s2");list.add("s3");list.add("s4");System.out.println(list);Comparator<String> comp = Collections.reverseOrder();Collections.sort(list,comp);System.out.println(list);Comparator<String> comp2 = Collections.reverseOrder(comp);Collections.sort(list,comp2);System.out.println(list);

    運(yùn)行結(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);運(yùn)行結(jié)果:

    [s1, s2, s3, s4] [s4, s3, s2, s1] [s4, s3, s2, s1]

    7.synchronized系列

    確保所封裝的集合線程安全(強(qiáng)同步)

  • public static <T> Collection<T> synchronizedCollection(Collection<T> c)
  • public static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s)
  • public static <T> List<T> synchronizedList(List<T> list)
  • public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)
  • public static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m)
  • public static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s)

  • 8. unmodifiable系列

    確保所封裝的集合不能修改。

  • public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c)
  • public static <T> Set<T> unmodifiableSet(Set<? extends T> s)
  • public static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s)
  • public static <T> List<T> unmodifiableList(List<? extends T> list)
  • public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K, ? extends V> m)
  • public static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K, ? extends V> m)

  • 9.其他

    Collections工具類的功能不止上面這些,還有諸如fill(), rotate(), max(), min()等方法,不可能一下子就能全部記住,使用的時(shí)候多查查API即可。

    參考資料:

  • 《Comparable與Comparator淺析》
  • 歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/java/java-collection-collections/


    歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。


    總結(jié)

    以上是生活随笔為你收集整理的Java集合框架:Collections工具类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。