1. ホーム
  2. java

[解決済み] Java: List<String> を join()d String に変換する。

2022-03-15 14:44:40

質問

JavaScriptは Array.join()

js>["Bill","Bob","Steve"].join(" and ")
Bill and Bob and Steve

Javaにこのようなものはあるのでしょうか?を使えば、自分で何か作ることができるのは知っています。 StringBuilder :

static public String join(List<String> list, String conjunction)
{
   StringBuilder sb = new StringBuilder();
   boolean first = true;
   for (String item : list)
   {
      if (first)
         first = false;
      else
         sb.append(conjunction);
      sb.append(item);
   }
   return sb.toString();
}

...しかし、このようなものがすでにJDKの一部であるなら、これを行う意味はありません。

解決方法は?

Java 8では、サードパーティのライブラリなしで、このようなことができます。

文字列のコレクションを結合したい場合は、新しい 文字列.join() メソッドを使用します。

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

String以外の型のCollectionがある場合は、Stream APIを使用して 接合コレクター :

List<Person> list = Arrays.asList(
  new Person("John", "Smith"),
  new Person("Anna", "Martinez"),
  new Person("Paul", "Watson ")
);

String joinedFirstNames = list.stream()
  .map(Person::getFirstName)
  .collect(Collectors.joining(", ")); // "John, Anna, Paul"

StringJoiner クラスも便利です。