首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java Collections 工具類全攻略:排序、打亂、旋轉、交換

     編輯:Java 綜合教學

Java Collections 工具類全攻略:排序、打亂、旋轉、交換

java.util.Collections 提供了豐富的靜態方法操作集合,本文通過實例演示自然排序、拼音排序、逆序、隨機打亂、循環移位、元素交換等常用場景。

測試數據

List list = Arrays.asList(
    "浙江移動", "江蘇移動", "浙江電信", 
    "上海移動", "北京移動", "浙江聯通"
);

1. 自然排序 (按 Unicode 編碼)

Collections.sort(list);
System.out.println(String.join(",", list));
// 上海移動,北京移動,江蘇移動,浙江電信,浙江移動,浙江聯通

2. 中文拼音排序 (Locale.CHINA)

Collections.sort(list, Collator.getInstance(Locale.CHINA));
System.out.println(String.join(",", list));
// 北京移動,江蘇移動,上海移動,浙江電信,浙江聯通,浙江移動

3. 逆序排序

Collections.sort(list, Collator.getInstance(Locale.CHINA));
Collections.reverse(list);
System.out.println(String.join(",", list));
// 浙江移動,浙江聯通,浙江電信,上海移動,江蘇移動,北京移動

4. 隨機打亂

Collections.shuffle(list);
System.out.println(String.join(",", list));
// 每次運行結果不同,如:浙江電信,浙江移動,上海移動,江蘇移動,浙江聯通,北京移動

5. 循環移位

Collections.rotate(list, 1);  // 向右移 1 位
System.out.println(String.join(",", list));
// 浙江聯通,浙江移動,江蘇移動,浙江電信,上海移動,北京移動

Collections.rotate(list, -2); // 向左移 2 位
System.out.println(String.join(",", list));
// 江蘇移動,浙江電信,上海移動,北京移動,浙江聯通,浙江移動

6. 元素交換

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 或提供 Comparator
  • shuffle 依賴 Random,測試時可固定種子復現
  • 多線程環境下用 synchronizedList 或並發集合
  • 不可修改視圖適合防禦性編程,防止外部修改內部集合
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved