Java - 二つのListを一つにまとめる方法

二つのListを一つのLisに合致は方法を紹介します。

List.addAll()

addAll()で引数として渡されたリストのすべてのアイテムをリストに追加することができます。

以下は、二つのリストを一つのリストの両方に追加するコードです。

List<String> list1 = new ArrayList<>();
list1.add("a1");
list1.add("a2");

List<String> list2 = new ArrayList<>();
list2.add("b1");
list2.add("b2");

List<String> joined = new ArrayList<>();
joined.addAll(list1);
joined.addAll(list2);

System.out.println(joined);

結果

[a1, a2, b1, b2]

Guava

Guavaの IterablesListsを利用して、二つのリストを一つ結合することができます。

List<String> list1 = new ArrayList<>();
list1.add("a1");
list1.add("a2");

List<String> list2 = new ArrayList<>();
list2.add("b1");
list2.add("b2");

Iterable<String> joinedIterable = Iterables.unmodifiableIterable(
        Iterables.concat(list1, list2));
Collection<String> joined = Lists.newArrayList(joinedIterable);
System.out.println(joined);

結果

[a1, a2, b1, b2]

Apache

Apacheの ListUtils.union()は二つのリストをひとつ合わせ、合わさったリストを返してくれるAPIです。

List<String> list1 = new ArrayList<>();
list1.add("a1");
list1.add("a2");

List<String> list2 = new ArrayList<>();
list2.add("b1");
list2.add("b2");

List<String> joined = ListUtils.union(list1, list2);
System.out.println(joined);

結果

[a1, a2, b1, b2]

Stream

Streamを利用して1つのリストにすることもできます。

List<String> list1 = new ArrayList<>();
list1.add("a1");
list1.add("a2");

List<String> list2 = new ArrayList<>();
list2.add("b1");
list2.add("b2");

List<String> joined = Stream.concat(list1.stream(), list2.stream())
                            .collect(Collectors.toList());
System.out.println(joined);

結果

[a1, a2, b1, b2]

Streamのfilter()を使用して、必要なアイテムだけ選んで追加することができます。

次のコードは、1を含む文字列のみを joinedリストに追加するコードです。

List<String> list1 = new ArrayList<>();
list1.add("a1");
list1.add("a2");

List<String> list2 = new ArrayList<>();
list2.add("b1");
list2.add("b2");

List<String> joined = Stream.concat(list1.stream(), list2.stream())
                            .filter(s->s.contains("1"))
                            .collect(Collectors.toList());
System.out.println(joined);

結果

[a1, b1]

参考

Related Posts

codechachaCopyright ©2019 codechacha