Javaでコンマ区切りの文字列をリストに変換する
この投稿では、Javaでコンマ区切りの文字列をリストに変換する方法について説明します。
1.使用する Arrays.asList
と split()
方法
アイデアは、を使用して文字列を分割することです split()
メソッドを実行し、結果のアレイを Arrays.asList()
固定サイズを返すメソッド List
アレイに支えられています。可変を取得するには ArrayList
、さらに固定サイズのリストをに渡すことができます ArrayList
コンストラクタ。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { String str = "A,B,C,D"; List<String> list = Arrays.asList(str.split(",")); System.out.println(list); // [A, B, C, D] } } |
2.Guavaライブラリの使用
別の良い代替手段は、 Splitter
以下に示すように、Guavaライブラリのクラスを使用して文字列を分割します。これは Iterable
アレイの代わりに、これを渡すことができます Lists.newArrayList()
。可変を作成します ArrayList
のすべての要素を含むインスタンス Iterable
。この方法は、後で要素を追加または削除する必要がある場合、または一部の要素がnullになる可能性がある場合に適しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import com.google.common.base.Splitter; import com.google.common.collect.Lists; import java.util.List; class Main { public static void main(String[] args) { String str = "A,B,C,D"; List<String> list = Lists.newArrayList(Splitter.on(",").split(str)); System.out.println(list); // [A, B, C, D] } } |
3.Java8の使用
Java 8以降では、Streamを使用できます。アイデアは、を使用して文字列を分割することです split()
メソッドを使用して、アレイをストリームに変換してから、を使用してすべての入力要素を新しいリストに収集します Collectors.toList()
方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; class Main { public static void main(String[] args) { String str = "A,B,C,D"; List<String> list = Stream.of(str.split(",")) .collect(Collectors.toList()); System.out.println(list); // [A, B, C, D] } } |
これは次と同等です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import java.util.ArrayList; import java.util.List; class Main { public static void main(String[] args) { String str = "A,B,C,D"; List<String> list = new ArrayList<>(); for (String s : str.split(",")) { list.add(s); } System.out.println(list); // [A, B, C, D] } } |
ご了承ください Collectors.toList()
返されるリストのタイプについての保証はありません。目的のコレクションを取得するには、 toCollection()
によって提供される方法 Collectors
次のような目的のコンストラクタメソッド参照を受け入れることができるクラス ArrayList::new
また LinkedList::new
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; class Main { public static void main(String[] args) { String str = "A,B,C,D"; List<String> list = Stream.of(str.split(",")) .collect(Collectors.toCollection(ArrayList::new)); System.out.println(list); // [A, B, C, D] } } |
4.使用する splitAsStream()
方法
使用することもできます splitAsStream()
メソッド。指定されたパターンの一致を中心に入力を分割することによって計算されたストリームを返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import java.util.List; import java.util.regex.Pattern; import java.util.stream.Collectors; class Main { public static void main(String[] args) { String str = "A,B,C,D"; List<String> list = Pattern.compile(",").splitAsStream(str) .collect(Collectors.toList()); System.out.println(list); // [A, B, C, D] } } |
これで、Javaでコンマ区切りの文字列をリストに変換できます。