1. ホーム
  2. java

新しい1.8ストリームAPIで文字列を連結する方法 [重複]について

2023-08-17 16:54:10

質問

Personコレクションのすべての名前を連結し、結果の文字列を返す簡単なメソッドがあるとします。

public String concantAndReturnNames(final Collection<Person> persons) {
    String result = "";
    for (Person person : persons) {
        result += person.getName();
    }
    return result;
}

このコードを新しいストリームAPIのforEach関数で1行で書く方法はありますか?

どのように解決するのですか?

やりたいことの公式ドキュメントです。 https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html

 // Accumulate names into a List
 List<String> list = people.stream().map(Person::getName).collect(Collectors.toList());

 // Convert elements to strings and concatenate them, separated by commas
 String joined = things.stream()
                       .map(Object::toString)
                       .collect(Collectors.joining(", "));

あなたの例では、次のようにする必要があります。

 // Convert elements to strings and concatenate them, separated by commas
 String joined = persons.stream()
                       .map(Person::getName) // This will call person.getName()
                       .collect(Collectors.joining(", "));

に渡される引数は Collectors.joining は省略可能です。