15

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

所以说数组列表有

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

我想制作一个名为 sentence 的字符串,其中包含“hello world,你好吗?”

4

7 回答 7

31

从 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,我很感激。我的意思是,如果在 a中StringJoiner遇到 a ,它不会抛出 NPE:nullList

@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());
}
于 2016-01-11T17:46:34.147 回答
13

就像评论中建议的那样,您可以使用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);
于 2012-12-04T04:04:47.643 回答
13

使用 StringUtils 来解决这个问题。

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

StringUtils.join(myList,","))

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

于 2015-09-02T17:11:27.840 回答
2

爪哇 8

final String concatString= List.stream()
                .collect(Collectors.joining(" "));
于 2018-01-05T01:30:49.230 回答
1

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

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

希望有帮助!

于 2012-12-04T03:27:53.023 回答
1

最简单的方法:

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

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

于 2012-12-04T03:29:59.537 回答
-1

这是简单的方法

字符串值 = TextUtils.join(" ", 示例);

样本是数组列表

于 2014-02-18T11:21:50.983 回答