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

Java 集合與字符串互轉:StringUtils.join 與 split/Arrays.asList 實戰

     編輯:Java 相關知識

集合 → 字符串:一行代碼搞定

// 依賴 commons-lang3
List sports = Arrays.asList("籃球", "足球", "排球");
String joined = StringUtils.join(sports, ",");  // "籃球,足球,排球"

// 指定前綴/後綴
String wrapped = StringUtils.join(sports, ",", "[", "]");  // "[籃球,足球,排球]"

核心方法:`StringUtils.join(Iterable, separator)` / `join(Object[], separator)`

字符串 → 集合:標準三步走

String str = "籃球,足球,排球";

// 1. 分割為數組(正則支援)
String[] arr = str.split("\\s*,\\s*");  // 兼容 "a, b ,c"

// 2. 數組轉 List(注意:返回固定大小 List,不可增刪)
List list = Arrays.asList(arr);

// 3. 若需可變 List,再包一層
List mutable = new ArrayList<>(list);

避坑指南

場景錯誤做法正確做法
分割含空白`split(",")``split("\\s*,\\s*")`
需可變 List直接用 `Arrays.asList()` 增刪`new ArrayList<>(Arrays.asList(arr))`
空字符串分割`"".split(",")` 返回 `[""]`先判空 `StringUtils.isBlank(str) ? Collections.emptyList() : ...`
分隔符為特殊字符`split("|")``split("\\|")` 轉義

進階:自定義對象集合轉字符串

class User { String name; int age; /* getter/setter/toString */ }

List users = ...;
// 方案 1:Stream API (Java 8+)
String names = users.stream().map(User::getName).collect(Collectors.joining(","));

// 方案 2:StringUtils.join + 轉換器 (commons-lang3 3.11+)
String names = StringUtils.join(users, ",", u -> u.getName());

性能對比(十萬條數據)

| 方案 | 耗時(ms) | 推薦 | |------|----------|------| | StringUtils.join | ~15 | ⭐⭐⭐⭐⭐ | | StringBuilder 手寫循環 | ~12 | ⭐⭐⭐⭐ (無依賴) | | Stream Collectors.joining | ~25 | ⭐⭐⭐ | | 字符串 + 拼接 | ~2000 | ❌ 禁止 |

總結

  • **集合轉字符串**:首選 `StringUtils.join`,代碼最簡、性能佳
  • **字符串轉集合**:`split` + `Arrays.asList` + 可選 `new ArrayList<>()`
  • **自定義對象**:Java 8 Stream API 最優雅,或 commons-lang3 轉換器
  • **永遠記住**:分割正則轉義、空值預處理、固定 List 不可變
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved