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

Java 集合與字符串互轉完全指南:Apache Commons Lang 與原生 API 實戰

     編輯:Java 綜合教學

前言

在日常開發中,集合與字符串的相互轉換是高頻操作。無論是將 List 拼接為逗號分隔的字符串存入數據庫,還是解析前端傳來的 CSV 格式參數,掌握高效、優雅的轉換方式都能顯著提升代碼質量。本文將介紹 Apache Commons Lang 的 StringUtils.join 與 JDK 原生 String.split + Arrays.asList 兩種主流方案。

一、集合轉字符串:StringUtils.join 一行搞定

引入 Maven 依賴:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

核心代碼:

import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.List;

List<String> sports = Arrays.asList("籃球", "足球");
String joined = StringUtils.join(sports, ",");
System.out.println(joined); // 輸出:籃球,足球

優勢:

  • 自動處理 null 元素(可配置)
  • 支持任意 Iterable、數組、Iterator
  • 性能優於手動循環拼接(內部使用 StringBuilder)
  • 代碼可讀性極強,一行代碼表達意圖

二、字符串轉集合:原生 API 組合拳

無需第三方庫,JDK 內置即可完成:

String str = "籃球,足球,排球";
// 1. 正則分割得到數組(注意轉義特殊字符)
String[] arr = str.split(",");
// 2. 數組轉 List(注意:返回的 List 為固定長度,不可增刪)
List<String> list = Arrays.asList(arr);
// 3. 若需可變 List,再包一層
List<String> mutableList = new ArrayList<>(list);

mutableList.forEach(System.out::println);
/* 輸出:
籃球
足球
排球
*/

避坑指南:

  1. Arrays.asList 返回的列表不支持 add/remove,操作會拋出 UnsupportedOperationException,需 `new ArrayList<>(list)` 包裝。
  2. 分割正則需注意特殊字符(如 `|`、`*`)需轉義:str.split("\\|")。
  3. 若字符串可能為空或空白,建議先 `StringUtils.isNotBlank(str)` 判斷,避免產生包含單個空字符串的列表。

三、進階場景:自定義分隔符、過濾空值、對象屬性提取

1. 過濾空值並自定義分隔符

List<String> data = Arrays.asList("A", "", "B", null, "C");
// StringUtils.join 會保留空字符串,需先過濾
List<String> filtered = data.stream().filter(StringUtils::isNotBlank).collect(Collectors.toList());
String result = StringUtils.join(filtered, ";"); // A;B;C

2. 對象集合提取某屬性拼接

class User { String name; int age; /* getter/setter */ }
List<User> users = List.of(new User("張三", 20), new User("李四", 25));
// Java 8 Stream 方案
String names = users.stream().map(User::getName).collect(Collectors.joining(","));
// 輸出:張三,李四

四、總結與最佳實踐

場景推薦方案備註
集合 → 字符串StringUtils.join(list, ",")引入 commons-lang3,最簡潔高效
字符串 → 集合Arrays.asList(str.split(",")) + new ArrayList()純 JDK,注意不可變列表問題
對象屬性拼接Stream.map().collect(joining())Java 8+,函數式風格,無第三方依賴
高性能批量拼接StringBuilder 手動循環極端性能敏感場景,避免對象創建開銷

選擇原則:優先用標準庫/成熟工具類表達業務意圖,性能瓶頸時再優化。Apache Commons Lang 經過廣泛生產驗證,是處理字符串操作的首選利器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved