將兩個逗號分隔的字符串合併、去重並按自然順序排序,輸出同格式字符串。
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());
Comparable 順序(字符串為字典序)存儲。hasMoreTokens/nextToken 迭代。現代代碼建議用 str.split(",") 或 Arrays.stream(str.split(","))。+= 產生大量中間對象。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。