13 Java集合 - Collections工具類

13.1 Collections工具類

????????Collections是Java提供的操作集合的工具類,可以對(duì)集合進(jìn)行排序、查詢和修改,還提供了將集合變?yōu)椴豢勺?、?duì)集合對(duì)象實(shí)現(xiàn)同步控制的方法等。

13.2 排序操作

????Collections提供了如下方法對(duì)List集合元素進(jìn)行排序:

? ? ? ? - static void reverse(List list):反轉(zhuǎn)指定List集合中元素的順序。

? ? ? ? - static void shuffle(List list):對(duì)List集合元素進(jìn)行隨機(jī)排序(shuffle方法模擬了“洗牌”動(dòng)作)。

? ? ? ? - static void sort(List list):根據(jù)元素的自然順序?qū)χ付↙ist集合的元素按升序進(jìn)行排序。

? ? ? ? - static void sort(List list, Comparator c):根據(jù)指定Comparator產(chǎn)生的順序?qū)ist集合元素進(jìn)行排序。

? ? ? ? - static?void?swap(List?list,?int?i,?in?j):將指定List集合中的i處元素和j處元素進(jìn)行交換。

? ? ? ? - static void rotate(List list):當(dāng)distance為正數(shù)時(shí),將list集合的后distance個(gè)元素“整體”移到前面;當(dāng)distance為負(fù)數(shù)時(shí),將list集合的前distance個(gè)元素“整體”移到后面。該方法不會(huì)改變集合的長(zhǎng)度。

13.3 查找、替換操作

????Collections提供了如下用于查找、替換集合元素的常用方法:

? ? ? ? - static int binarySearch(List list, Object key):使用二分搜索法搜索指定的List集合,以獲得指定對(duì)象在List集合中的索引。如果要使該方法可以正常工作,則必須保證List中的元素已經(jīng)處于有序狀態(tài)。

? ? ? ? - static?Object?max(Collection?c):根據(jù)元素的自然順序,返回指定集合中的最大元素。

? ? ? ? - static Object max(Collection c, Comparator comp):根據(jù)Comparator指定的順序,返回指定集合中的最大元素。

? ? ? ? - static Object min(Collection c):根據(jù)元素的自然順序,返回指定集合中的最小元素。

? ? ? ? - static Object min(Collection c, Comparator comp):根據(jù)Comparator指定的順序,返回指定集合中的最小元素。

? ? ? ? - static void fill(List list, Object obj):使用指定元素obj替換指定List集合中的所有元素。

? ? ? ? - static int frequency(Collection c, Object o):返指定集合中指定元素的出現(xiàn)次數(shù)。

? ? ? ? - static?int?indexOfSubList(List source, List target):返回子List對(duì)象在父List對(duì)象中第一次出現(xiàn)的位置索引。如果父List中沒有出現(xiàn)這樣的子List,則返回-1。

? ? ? ? - static int lastndexOfSubList(List source, List target):返回子List對(duì)象在父List對(duì)象中最后一次出現(xiàn)的位置索引。如果父List 中沒有出現(xiàn)這樣的子List,則返回-1。

? ? ? ? -?static boolean replaceAll(List list, Objcct oldVal, Object newVal):使用一個(gè)新值newVal替換List對(duì)象的所有舊值oldVal。

13.4 同步控制

????????Java集合框架中的HashSet、TreeSet、ArrayList、ArrayDeque、LinkedList、HashMap和TreeMap都是線程不安全的。

? ? ? ? Collections工具類提供了synchronizedXxx()方法用于將指定集合包裝成線程同步的集合,從而可以解決多線程并發(fā)訪問集合時(shí)的線程安全問題。

13.5 設(shè)置集合不可變

????Collections提供了如下類方法來返回一個(gè)不可變的集合:

? ? ? ? - empyXxx0:返回一一個(gè)空的、不可變的集合對(duì)象,此處的集合可以是List、Set和Map。

? ? ? ? - singletonXxx0:返回一個(gè)只包含指定對(duì)象(只有一個(gè)或一項(xiàng)元素)的、不可變的集合對(duì)象,此處的集合可以是List和Map。

? ? ? ? - unmodifiableXxx():返回指定集合對(duì)象的不可變視圖,此處的集合可以是List、Set和Map。

? ? ? ? 上面三類方法的參數(shù)是原有的集合對(duì)象,返回值是該集合的只讀版本。

? ? ? ? Set使用singleton()方法返回不可變對(duì)象,參數(shù)可以為數(shù)值、字符串等類型,不必為一個(gè)集合。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,628評(píng)論 18 399
  • 第十天 權(quán)限修飾符 public protected default private 同一類 true true ...
    炙冰閱讀 604評(píng)論 0 1
  • 一、基本數(shù)據(jù)類型 注釋 單行注釋:// 區(qū)域注釋:/* */ 文檔注釋:/** */ 數(shù)值 對(duì)于byte類型而言...
    龍貓小爺閱讀 4,436評(píng)論 0 16
  • 一個(gè)女孩兒,能對(duì)任何事情都有一個(gè)不焦不躁平淡的態(tài)度和一顆耐得住寂寞的心,本身就是一種太具吸引力氣質(zhì)和一種骨...
    W麗平閱讀 1,300評(píng)論 0 2
  • 人類及所有生命體,都有著或長(zhǎng)或短的一生。在這一生里,無論長(zhǎng)短,無論平凡或轟烈,都得經(jīng)歷各種各樣的選擇,是去或...
    你該是一棵樹閱讀 197評(píng)論 0 1

友情鏈接更多精彩內(nèi)容