【问题标题】:ArrayList of Strings to one single stringArrayList 字符串到一个字符串
【发布时间】:2012-11-21 15:28:18
【问题描述】:

我有一个字符串数组列表(数组列表中的每个单独元素只是一个没有空格的单词),我想获取每个元素并将每个下一个单词附加到字符串的末尾。

所以说数组列表有

    element 0 = "hello"
    element 1 = "world,"
    element 2 = "how"
    element 3 = "are"
    element 4 = "you?"

我想创建一个包含“hello world, how are you?”的字符串,叫做sentence。

【问题讨论】:

  • 你好,考虑接受一个答案:)

标签: java string arraylist


【解决方案1】:

从 Java 8 开始,这已添加到标准 Java API:

String.join() 方法:

String joined = String.join("/", "2014", "10", "28" ); // "2014/10/28"

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

StringJoiner 也被添加:

StringJoiner joiner = new StringJoiner(",");
joiner.add("foo");
joiner.add("bar");
joiner.add("baz");
String joined = joiner.toString(); // "foo,bar,baz"

另外,它是 nullsafe,我很感激。我的意思是,如果StringJoinerList 中遇到null,它不会抛出NPE:

@Test
public void showNullInStringJoiner() {
    StringJoiner joinedErrors = new StringJoiner("|");
    List<String> errorList = Arrays.asList("asdf", "bdfs", null, "das");
    for (String desc : errorList) {
        joinedErrors.add(desc);
    }

    assertEquals("asdf|bdfs|null|das", joinedErrors.toString());
}

【讨论】:

    【解决方案2】:

    使用 StringUtils 来解决这个问题。

    例如Apache Commons Lang 提供了 join 方法。

    StringUtils.join(myList,","))
    

    它将遍历您的数组或字符串列表并将它们连接起来,使用第二个参数作为分隔符。请记住 - 总有一个图书馆可以让一切变得简单。

    【讨论】:

      【解决方案3】:

      就像 cmets 中建议的那样,您可以使用 StringBuilder

      StringBuilder listString = new StringBuilder();
      
      for (String s : list)
           listString.append(s).append(" ");
      

      或者没有显式循环:

      list.forEach(s -> listString.append(s).append(" "));
      

      使用 Java 8 功能甚至更优雅:

      String listString = String.join(" ", list);
      

      【讨论】:

      • 这种方式是这里提到的最快的方式,顺便说一句
      【解决方案4】:

      Java 8

      final String concatString= List.stream()
                      .collect(Collectors.joining(" "));
      

      【讨论】:

      • 为什么是连字符?
      【解决方案5】:

      嗯,一个标准的 for 循环应该可以工作:

      String toPrint = "";
      for(int i=0; i<list.size(); i++){
        toPrint += list.get(i)+" ";
      }
      System.out.println(toPrint);
      

      希望有帮助!

      【讨论】:

      • 只需在单词之间添加空格。
      • 谢谢!编辑包括在内。
      • 还在“世界,如何”之间添加“,”......开玩笑的。
      • 非常感谢!它就像一个魅力。现在我只需要在其中添加空间。
      • 如果他是初学者,他不妨使用一些基本的东西。
      【解决方案6】:

      最简单的方法:

      String ret = "";
      for (int i = 0; i < array.size(); i++) {
          ret += array.get(i) + " ";
      }
      

      但是如果你的数组很长,字符串 concat 的性能很差。您应该使用 StringBuilder 类。

      【讨论】:

      • 感谢您的回复。假设我的字符串低于某个可管理的长度。它只是一个简单的类;没什么太复杂的哈
      【解决方案7】:

      这个方法很简单

      String value = TextUtils.join(" ", sample);

      样本是数组列表

      【讨论】:

      • 这不属于标准API。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多