java.util.Collections 提供了豐富的靜態方法操作集合,本文通過實例演示自然排序、拼音排序、逆序、隨機打亂、循環移位、元素交換等常用場景。
List list = Arrays.asList(
"浙江移動", "江蘇移動", "浙江電信",
"上海移動", "北京移動", "浙江聯通"
);
Collections.sort(list);
System.out.println(String.join(",", list));
// 上海移動,北京移動,江蘇移動,浙江電信,浙江移動,浙江聯通
Collections.sort(list, Collator.getInstance(Locale.CHINA));
System.out.println(String.join(",", list));
// 北京移動,江蘇移動,上海移動,浙江電信,浙江聯通,浙江移動
Collections.sort(list, Collator.getInstance(Locale.CHINA));
Collections.reverse(list);
System.out.println(String.join(",", list));
// 浙江移動,浙江聯通,浙江電信,上海移動,江蘇移動,北京移動
Collections.shuffle(list);
System.out.println(String.join(",", list));
// 每次運行結果不同,如:浙江電信,浙江移動,上海移動,江蘇移動,浙江聯通,北京移動
Collections.rotate(list, 1); // 向右移 1 位
System.out.println(String.join(",", list));
// 浙江聯通,浙江移動,江蘇移動,浙江電信,上海移動,北京移動
Collections.rotate(list, -2); // 向左移 2 位
System.out.println(String.join(",", list));
// 江蘇移動,浙江電信,上海移動,北京移動,浙江聯通,浙江移動
Collections.swap(list, 0, 1);
System.out.println(String.join(",", list));
// 江蘇移動,浙江移動,浙江電信,上海移動,北京移動,浙江聯通
| 方法 | 說明 |
|---|---|
binarySearch(list, key) | 二分查找,前提列表已排序 |
max/min(coll) | 返回最大/最小元素 |
frequency(coll, o) | 統計元素出現次數 |
disjoint(c1, c2) | 判斷兩集合無交集 |
replaceAll(list, old, new) | 替換所有指定元素 |
copy(dest, src) | 列表複製 (dest 長度 ≥ src) |
synchronizedList(list) | 返回線程安全列表視圖 |
unmodifiableList(list) | 返回不可修改視圖 |
Comparable 或提供 Comparatorshuffle 依賴 Random,測試時可固定種子復現synchronizedList 或並發集合