如何将List<String>转换成一个String字符串

举报
liuzhen007 发表于 2021/07/25 17:15:30 2021/07/25
【摘要】 目录问题解决 问题问题:在Java中如何将String链表转换成一个String字符串?Stackoverflow地址:https://stackoverflow.com/questions/1751844/java-convert-liststring-to-a-string在JavaScript中有Array.join()方法可以实现对应的功能,比如:["Bill","Bob","Ste...

目录

  • 问题
  • 解决

问题

问题:在Java中如何将String链表转换成一个String字符串?

Stackoverflow地址https://stackoverflow.com/questions/1751844/java-convert-liststring-to-a-string

在JavaScript中有Array.join()方法可以实现对应的功能,比如:

["Bill","Bob","Steve"].join(" and ")
Bill and Bob and Steve

那么,Java有没有类似的方法呢?
题主自己利用StringBuilder实现了一个类似功能的方法,具体实现如下:

static public String join(List<String> list, String conjunction)
{
   StringBuilder sb = new StringBuilder();
   boolean first = true;
   for (String item : list)
   {
      if (first)
         first = false;
      else
         sb.append(conjunction);
      sb.append(item);
   }
   return sb.toString();
}

但是,题主非常想知道JDK有没有类似的接口方法,如果已经有了,那么他这样做就没有意义了。

解决

最佳回答!
如果你使用的Java 8,那么你不需要依赖任何第三方库就可以实现该功能,你可以使用String.join()方法。
具体代码可以参考如下:

List<String> list = Arrays.asList("foo", "bar", "baz");
String joined = String.join(" and ", list); // "foo and bar and baz"

如果集合类型不是单独的String,你也可以使用Stream接口和Collector的joining()方法实现对应的功能,具体代码如下:

List<Person> list = Arrays.asList(
  new Person("John", "Smith"),
  new Person("Anna", "Martinez"),
  new Person("Paul", "Watson ")
);

String joinedFirstNames = list.stream()
  .map(Person::getFirstName)
  .collect(Collectors.joining(", ")); // "John, Anna, Paul"

另外,StringJoiner类可能也是可以考虑的。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。