複数の行を連結したいという状況に陥ったことがあると思います。Java で記述したことがない場合は、おそらく
join()
プログラミング言語自体によって提供される関数を使用したことでしょう。Java で書いた場合は、単純な理由でこれを実行できませんでした。このメソッドが存在しませんでした。Java の標準クラス ライブラリは、GUI アプリケーションの作成、データベースへのアクセス、ネットワーク経由のデータ送信、XML 変換の実行、またはサードパーティ ライブラリからのメソッドの呼び出しを行うためのツールを提供します。文字列のコレクションを連結する簡単な方法は含まれていませんでした。これを行うには、多数のサードパーティ ライブラリのうちの 1 つが必要でした。 幸いなことに、これは終わりました!Java 8 では、ついに文字列を連結できるようになりました。Java 8 では、 という新しいクラスが追加されましたStringJoiner
。名前が示すように、このクラスを使用して文字列を連結できます。
StringJoiner joiner = new StringJoiner(",");
joiner.add("foo");
joiner.add("bar");
joiner.add("baz");
String joined = joiner.toString(); // "foo,bar,baz"
// add() calls can be chained
joined = new StringJoiner("-")
.add("foo")
.add("bar")
.add("baz")
.toString(); // "foo-bar-baz"
String
は 2 つの新しい静的メソッドを使用しますjoin() StringJoiner
。
// join(CharSequence delimiter, CharSequence... elements)
String joined = String.join("/", "2014", "10", "28" ); // "2014/10/28"
// join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
List<String> list = Arrays.asList("foo", "bar", "baz");
joined = String.join(";", list); // «foo;bar;baz"
Collector
また、文字列を連結するために、新しい 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»
この方法では、文字列を連結するためにサードパーティのライブラリを使用する必要がなくなりました。 原著
GO TO FULL VERSION