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

Java 合併去重逗號字符串:TreeSet + StringTokenizer 實戰

     編輯:Java 程式設計入門

需求場景

將兩個逗號分隔的字符串合併、去重並按自然順序排序,輸出同格式字符串。

String str1 = "001,002,003,004,006";
String str2 = "001,002,005";
// 期望輸出:001,002,003,004,005,006,

核心代碼

TreeSet<String> set = new TreeSet<>(); // 自動去重 + 自然排序
StringTokenizer st = new StringTokenizer(str1, ",");
while (st.hasMoreTokens()) set.add(st.nextToken());

st = new StringTokenizer(str2, ",");
while (st.hasMoreTokens()) set.add(st.nextToken());

StringBuilder sb = new StringBuilder();
for (String s : set) sb.append(s).append(',');
System.out.println(sb.toString());

關鍵點解析

  • TreeSet:基於紅黑樹,保證元素唯一且按 Comparable 順序(字符串為字典序)存儲。
  • StringTokenizer:舊版分割工具,hasMoreTokens/nextToken 迭代。現代代碼建議用 str.split(",") 或 Arrays.stream(str.split(","))。
  • StringBuilder:高效拼接,避免 += 產生大量中間對象。

現代寫法(Java 8+)

String result = Stream.of(str1.split(","), str2.split(","))
    .flatMap(Arrays::stream)
    .collect(Collectors.toCollection(TreeSet::new)) // 去重+排序
    .stream()
    .collect(Collectors.joining(",")) + ","; // 末尾補逗號

注意事項

  • 若需保持原始出現順序而非排序,改用 LinkedHashSet。
  • 輸入可能包含空格,建議 token.trim() 後再加入集合。
  • 大數據量時,split 正則開銷較大,可考慮手寫解析或 StringTokenizer。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved