将 List<String> 转换为分隔字符串 [重复]

Posted

技术标签:

【中文标题】将 List<String> 转换为分隔字符串 [重复]【英文标题】:Convert List<String> to delimited String [duplicate] 【发布时间】:2011-09-08 20:16:45 【问题描述】:

可能重复:Java: convert List<String> to a join()d string

有这个:

List<String> elementNames = Arrays.asList("h1", "h2", "h3", "h4", "h5", "h6");

什么是使用自定义分隔符获取字符串的优雅方法,如下所示:

"h1,h2,h3,h4,h5,h6"

【问题讨论】:

抱歉重复了。快速搜索了一下,似乎错过了。 【参考方案1】:
StringBuilder sb = new StringBuilder();

for(String s: elementnames) 
   sb.append(s).append(',');


sb.deleteCharAt(sb.length()-1); //delete last comma

String newString = sb.toString();

更新:从 java 8 开始,您可以使用以下方法获得相同的结果:

    List<String> elementNames = Arrays.asList("1", "2", "3");

    StringJoiner joiner = new StringJoiner(",", "", "");
    elementNames.forEach(joiner::add);

    System.out.println(joiner.toString());

【讨论】:

这只是在他介意使用外部库的情况下。 =) 支持没有外部库 - 我正在重构具有已修复的“老式”依赖项的古老代码。 Java 8 版本可以用 Collectors 在 1 行上完成。字符串连接 = elementNames.stream().collect(Collectors.joining(","));【参考方案2】:

如果你不介意使用 apache 提供的 StringUtils 库,你可以这样做:

// Output is "a,b,c"
StringUtils.join(["a", "b", "c"], ','); 

https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html

【讨论】:

+1 表示紧凑,我会这样做 StringUtils.collectionToDelimitedString 而且你甚至可以传入 List 和 Iterable,而不仅仅是数组。

以上是关于将 List<String> 转换为分隔字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 List<string> 转换为 List<myEnumType>?

如何将 List<int> 转换为 string[]?

C# 将 List<string> 转换为 Dictionary<string, string>

将 List<string> 转换为 ArrayList

将 List<String> 直接转换为 List<Integer>

无法将 Dictionary<string, List<string>> 转换为 IReadOnlyDictionary<string, IReadOnlyCollect