15

文字列の配列リストがあり (配列リストの個々の要素は空白のない単語です)、各要素を取り、次の単語を文字列の末尾に追加したいと考えています。

だから、配列リストが持っているとしましょう

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

「hello world, how are you?」を含む文章という文字列を作りたいです。

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で aにStringJoiner遭遇した場合、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 に答える
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) + " ";
}

ただし、配列が長い場合、文字列連結のパフォーマンスは低下します。StringBuilder クラスを使用する必要があります。

于 2012-12-04T03:29:59.537 に答える
-1

これは簡単な方法です

文字列値 = TextUtils.join(" ", サンプル);

サンプルは配列リストです

于 2014-02-18T11:21:50.983 に答える