只需一步即可使用分隔符连接String list元素

Eug*_*neP 78 java

是否有像join这样的函数将List的数据作为所有元素的字符串返回,由提供的分隔符连接?

 List<String> join; ....
 String join = list.join('+");
 // join == "Elem 1+Elem 2";
Run Code Online (Sandbox Code Playgroud)

或者必须使用迭代器手动粘贴元素?

gah*_*rae 117

Java 8 ...

String joined = String.join("+", list);
Run Code Online (Sandbox Code Playgroud)

文档:http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.Iterable-

  • 正确 - String.join()不处理任意类型.它需要一个可迭代的CharSequence,即List <String>.如果要分隔任意类型,则需要提取String值并构建分隔列表.这也是Java 8中的一个内容:`String joined = iterableOfNonCharSequence.stream().map(object - > object.methodToGetStringValue()).collect(Collectors.joining(","));` (4认同)
  • 可悲的是,String.join()仅接受Iterable &lt;CharSequence&gt;(除varargs外),而Guava的Join.join()则接受Iterable &lt;?&gt;,Iterator &lt;?&gt;,varargs等。 。 (2认同)

Rom*_*las 89

您可以使用StringUtils.join()Apache Commons Lang 的方法:

String join = StringUtils.join(joinList, "+");
Run Code Online (Sandbox Code Playgroud)


nan*_*nda 19

或Google Guava的Joiner.

Joiner joiner = Joiner.on("+");
String join = joiner.join(joinList);
Run Code Online (Sandbox Code Playgroud)