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è)集合。