一步完成使用分隔符连接字符串列表元素

96
有没有类似于join的函数可以将List的数据以提供的分隔符连接起来并返回一个字符串?
 List<String> join; ....
 String join = list.join('+");
 // join == "Elem 1+Elem 2";

还是必须使用迭代器手动将元素粘合在一起?

6个回答

153

3
遗憾的是,与Guava的Joiner.join()不同,String.join()仅接受Iterable<CharSequence>(除了varargs),而不接受Iterable<?>Iterator<?>、varargs等。 - Venkata Raju
8
String.join()方法无法处理任意类型的数据,它要求传入一个可迭代的CharSequence,例如List<String>。 如果你想将任意类型的数据拼接成字符串,则需要先提取其String值,并构建一个用分隔符分隔的列表。 在Java 8中,这也可以通过一行代码实现:String joined = iterableOfNonCharSequence.stream().map(object -> object.methodToGetStringValue()).collect(Collectors.joining(",")); - gahrae
StringJoiner也是一个用于连接内容的有用类。以下是一个示例程序,展示了StringJoiner和Collectors.joining的用法... http://pastebin.com/i2YwJcZy# - gahrae
本地Java解决方案 > 全部 - fIwJlxSzApHEZIl
@gahrae:你能把你与直播相关的解决方案单独写成一个回答吗?我想投票支持它 :) - undefined
@iuzuz:这个问题已经关闭,所以不能再提供新的答案了。还是谢谢你的关注和支持 :-) - undefined

100
你可以使用Apache Commons Lang的StringUtils.join()方法:StringUtils.join()
String join = StringUtils.join(joinList, "+");

当然,如果您不想使用第三方库,创建一个实用程序类也非常容易。但是Apache Commons Lang提供了许多有用的方法,可以处理null值... - Romain Linsolas

19

或者使用Google Guava中的Joiner。

Joiner joiner = Joiner.on("+");
String join = joiner.join(joinList);

4
您可以使用:org.springframework.util.StringUtils
String stringDelimitedByComma = StringUtils.collectionToCommaDelimitedString(myList);

3
如果您正在使用Spring框架,可以使用StringUtils.join()方法,该方法还允许您指定前缀和后缀。
String s = StringUtils.collectionToDelimitedString(fieldRoles.keySet(),
                "\n", "<value>", "</value>");

1
这实际上可以被复制,它是一个单一的方法:https://gist.github.com/Zhuinden/5d88caee5e184e2b6d5ced329618f086 - EpicPandaForce

2
如果你只想记录元素列表,可以使用列表的 toString() 方法,该方法已经连接了所有的列表元素。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接