1、Collections 集合工具類
Java 中的 Collections 是一個非常有用的工具類,它提供了許多靜態方法來操作或返回集合。這個類位于 java.util 包中,主要包含對集合進行操作的方法,比如排序、搜索、線程安全化等。
Java集合工具類的使用:
《Java使用Collections集合工具類》
《Java使用CollectionUtils集合工具類》
Java中 的 Collections 工具類提供了豐富的靜態方法來操作集合,主要功能可分為以下幾類:
方法 | 說明 |
---|---|
一、排序操作 | |
sort(List<T> list) | 對 List 進行自然排序(元素需實現 Comparable 接口)。 |
sort(List<T> list, Comparator<? super T> c) | 使用自定義比較器排序 |
reverse(List<?> list) | 反轉 List 元素順序。 |
shuffle(List<?> list) | 隨機打亂 List 元素順序。 |
swap(List<?> list, int i, int j) | 交換指定位置元素。 |
二、查找與統計 | |
max(Collection<? extends T> coll) | 返回集合最大值。 |
min(Collection<? extends T> coll) | 返回集合最小值。 |
frequency(Collection<?> c, Object o) | 統計元素出現次數。 |
binarySearch(List<? extends Comparable<? super T>> list, T key) | 二分查找已排序列表。 |
三、新增與修改 | |
addAll(Collection<? super T> c, T... elements) | 批量添加元素。 |
replaceAll(List<T> list, T oldVal, T newVal) | 替換所有匹配元素。 |
fill(List<? super T> list, T obj) | 用指定元素填充列表。 |
copy(List<? super T> dest, List<? extends T> src) | 列表復制。 |
四、不可變集合 | |
unmodifiableCollection(Collection<? extends T> c) | 返回不可修改集合視圖。 |
unmodifiableList(List<? extends T> list) | 返回不可修改 List 視圖。 |
unmodifiableSet(Set<? extends T> s) | 返回不可修改 Set 視圖。 |
unmodifiableMap(Map<? extends K,? extends V> m) | 返回不可修改 Map 視圖。 |
五、同步控制 | |
synchronizedCollection(Collection<T> c) | 返回線程安全集合。 |
synchronizedList(List<T> list) | 返回線程安全 List。 |
synchronizedSet(Set<T> s) | 返回線程安全 Set。 |
synchronizedMap(Map<K,V> m) | 返回線程安全 Map。 |
六、特殊集合 | |
emptyList()、emptySet()、emptyMap() | 返回空集合不可變實例。 |
singletonList(T o)、singletonSet(T o)、singletonMap(K k, V v) | 返回單元素不可變集合。 |
nCopies(int n, T o) | 返回包含 n 個相同元素的不可變 List。 |
checkedCollection(Collection<E> c, Class<E> type) | 返回類型安全集合視圖。 |
七、其他方法 | |
disjoint(Collection<?> c1, Collection<?> c2) | 判斷兩集合是否無交集。 |
indexOfSubList(List<?> source, List<?> target) | 返回子列表首次出現位置。 |
lastIndexOfSubList(List<?> source, List<?> target) | 返回子列表最后出現位置。 |
rotate(List<?> list, int distance) | 旋轉列表元素。 |
2、?Collections 方法的使用
Collections 類的方法都是靜態的,使用時直接通過類名調用,如 Collections.max(list)。這些方法大大簡化了集合操作,特別是對 List 的常見處理。?
【示例】使用?Collections 工具類提供的方法,模擬抽獎活動。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;/*** 抽獎活動* @author pan_junbiao**/
public class CollectionsTest
{public static void main(String[] args){// 創建集合列表(獎池)List<Integer> jackpot = new ArrayList<>();// 獎池添加數據Collections.addAll(jackpot, 25, 100, 5, 60, 888, 90);System.out.println("獎池中的金額:" + jackpot);// 統計Integer maxPrize = Collections.max(jackpot);Integer minPrize = Collections.min(jackpot);System.out.println("獎池中的最大金額:" + maxPrize);System.out.println("獎池中的最小金額:" + minPrize);// 隨機打亂獎池順序Collections.shuffle(jackpot);System.out.println("抽獎結果:" + jackpot);}
}
執行結果:
?3、Collections 的排序方法
Collections 類的 sort() 方法、reverse()方法說明:
Collections.sort()方法:自然排序?:對 List 集合中的元素進行升序排列,要求元素必須實現 Comparable 接口(如String、Integer等已默認實現)。
Collections.reverse()方法:反轉 List 集合中元素的順序,不依賴元素是否可比較。
Collections 類提供了兩種 sort() 排序方法,分別如下:
(1)sort() 排序方法一:
public static <T extends Comparable<? super T>> void sort(List<T> list)
{list.sort(null);
}
(2)sort() 排序方法二:
public static <T> void sort(List<T> list, Comparator<? super T> c) {list.sort(c);
}
該方法中指定比較方式 Comparator<? super T> c,即 c 必須實現 Comparator<? super T> 接口,重寫 compareTo() 方法指定比較項目。比較項目在類外指定,比較靈活。
【示例】使用 Collections 類的 sort() 方法、reverse()方法,實現對 List 列表進行排序與倒序。
/*** 使用 Collections 類的 sort() 方法、reverse()方法,* 實現對 List 列表進行排序與倒序。* @author pan_junbiao*/
@Test
public void testCollectionsSort()
{//創建列表(故意打亂順序)List<String> userList = new ArrayList<>();userList.add("pan_junbiao的博客_03");userList.add("pan_junbiao的博客_01");userList.add("pan_junbiao的博客_04");userList.add("pan_junbiao的博客_02");//執行排序方法(正序排序)Collections.sort(userList);System.out.println("正序排序:");userList.stream().forEach(System.out::println);//執行排序方法(倒序排序)Collections.reverse(userList);System.out.println("\n倒序排序:");userList.stream().forEach(System.out::println);
}
執行結果: