Java8で増えたString#join
を使うと配列やListの要素を文字列連結するのが楽です。地味に便利です。
Listをカンマで連結する例で動きの確認をしておきます
複数要素の場合
List<String> twoList = Arrays.asList("A", "B"); List<String> threeList = Arrays.asList("A", "B", "C"); System.out.println(twoList + " -> " + String.join(",", twoList)); System.out.println(threeList + " -> " + String.join(",", threeList));
■実行結果
[A, B] -> A,B [A, B, C] -> A,B,C
想定通りに指定したデリミタで各要素が連結されます
1要素の場合
List<String> singleList = Collections.singletonList("Hello"); System.out.println(singleList + " -> " + String.join(",", singleList));
■実行結果
[Hello] -> Hello
1要素でも正常に動作します。当然ですが連結結果にデリミタの文字は現れません。
要素数=0の場合
List<String> emptyList = Collections.emptyList(); System.out.println(emptyList + " -> " + String.join(",", emptyList));
■実行結果
[] ->
空Listを連結すると空文字列が返されます
要素にnullを含む場合
List<String> includeNullList = Arrays.asList("A", null, "C"); System.out.println(includeNullList + " -> " + String.join(",", includeNullList));
■実行結果
[A, null, C] -> A,null,C
nullの要素は、"null"という文字列として扱われて連結されます
List自体がnullの場合
List<String> nullList = null; System.out.println(nullList + " -> " + String.join(",", nullList));
■実行結果
Exception in thread "main" java.lang.NullPointerException at java.util.Objects.requireNonNull(Objects.java:203) at java.lang.String.join(String.java:2501) at trial.app.string.StringJoinLauncher.main(StringJoinLauncher.java:26)
List自体がnullの場合はNullPointerExceptionがスローされます