java - 在 Java 中加入字符串集合的首选习惯用法

标签 java string collections

给定一个字符串集合,在不使用外部库的情况下,您将如何在纯 Java 中加入它们?

鉴于这些变量:

Collection<String> data = Arrays.asList("Snap", "Crackle", "Pop");
String separator = ", ";
String joined; // let's create this, shall we?

这就是我在 Guava 中的做法:

joined = Joiner.on(separator).join(data);

Apache Commons / Lang :

joined = StringUtils.join(data, separator);

但是在纯 Java 中,真的没有比这更好的方法了吗?

StringBuilder sb = new StringBuilder();
for(String item : data){
    if(sb.length()>0)sb.append(separator);
    sb.append(item);
}
joined = sb.toString();

最佳答案

我会说不使用 Guava 的 best 方法(如果最好的意思不是“最简洁”)是使用 Guava 在内部使用的技术,对于您的示例来说看起来像这样:

Iterator<String> iter = data.iterator();
StringBuilder sb = new StringBuilder();
if (iter.hasNext()) {
  sb.append(iter.next());
  while (iter.hasNext()) {
    sb.append(separator).append(iter.next());
  }
}
String joined = sb.toString();

这不需要在迭代时进行 boolean 检查,也不需要对字符串进行任何后处理。

关于java - 在 Java 中加入字符串集合的首选习惯用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4930939/

相关文章:

javascript - 如何像在 Python 中那样在 Google Apps 脚本中对字符串进行切片?

string - 如何在 MATLAB 中将元胞数组转换为数值

collections - 如何从 “chunked” block 构建列表?

java - 如何改进返回给定 int 数组的具有排序索引的 int 数组的代码?

java - Struts2 - 正确地将 enye 字符从 jsp 传递到 struts 2 Action 类

c# - 如何管理在 C#/WPF 中看起来相似的本地化字符串?

java - ArrayList 与 LinkedList 的随机访问和添加删除

java - 带有 Guava 集合的线程安全 HashSet

java - 来自 Soap UI 的 SSL 请求失败,适用于 fiddler 代理

java - Formatter<LocalDateTime> 未在 REST 应用程序中向 Spring Boot 容器注册