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

Java 集合與陣列互轉完全指南:List、Set、Array 高效轉換技巧

     編輯:Java 程式設計入門

在 Java 開發中,List、Set 與陣列之間的相互轉換是高頻操作。本文整理 JDK 原生與 Apache Commons Collections 兩大體系的轉換方案,並分析各方法優缺點與適用場景。

陣列轉集合

1. 使用 Apache Commons Collections

import org.apache.commons.collections.CollectionUtils;

String[] strArray = {"aaa", "bbb", "ccc"};
List strList = new ArrayList<>();
Set strSet = new HashSet<>();

CollectionUtils.addAll(strList, strArray);
CollectionUtils.addAll(strSet, strArray);

CollectionUtils.addAll() 內部以迴圈呼叫 add() 實現,通用性強,支援任意 Collection 實現類。

2. 使用 JDK 原生 Arrays.asList()(僅限 List)

import java.util.Arrays;

String[] strArray = {"aaa", "bbb", "ccc"};
List strList = Arrays.asList(strArray);

注意:返回的 List 為固定大小,不支援 add/remove 操作,否則拋出 UnsupportedOperationException。若需可變 List,需再包裝:new ArrayList<>(Arrays.asList(array))。

集合轉陣列

直接呼叫 Collection 的 toArray() 方法:

Object[] toArray();                    // 返回 Object 陣列
<T> T[] toArray(T[] a);               // 返回指定型別陣列(推薦)

範例:

List list = Arrays.asList("a", "b", "c");
String[] array = list.toArray(new String[0]); // 尺寸為 0 讓 JVM 自動分配

Map 轉 Collection

直接使用 map.values() 取得值集合,或 map.keySet() 取得鍵集合:

Collection values = map.values();
Set keys = map.keySet();

List 與 Set 互轉

轉換方向程式碼範例特性
List → Set(去重) new HashSet<>(list) 自動去除重複元素
Set → List new ArrayList<>(set) 保留順序(若為 LinkedHashSet)
陣列 → List(可變) new ArrayList<>(Arrays.asList(array)) 支援增刪操作
陣列 → Set new HashSet<>(Arrays.asList(array)) 一步到位去重

最佳實踐建議

  • 簡單場景:優先使用 JDK 原生 Arrays.asList()、toArray()、建構子轉換,無額外依賴。
  • 複雜集合操作:引入 Apache Commons Collections 或 Guava,獲得更豐富的工具方法。
  • 效能敏感:避免頻繁轉換,設計階段統一資料結構;大量資料轉換時指定陣列初始容量減少擴容開銷。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved