Java - Listが他のListのすべての要素を含むことを確認する

ArrayList.containsAll() は、リストが引数として渡されたリストのすべての要素を持っていることを確認します。すべて持っている場合はtrueを返し、そうでない場合はfalseを返します。

1. containsAll() でリストのすべての要素を持っていることを確認する

次の例では、list1はlist2のすべての要素を持ち、list1はlist3のすべての要素を持っていません。 containsAll() でリストを含めるかどうかがわかります。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Example1 {

    public static void main(String[] args) {

        List<String> list1 = new ArrayList<>(Arrays.asList("Hello", "World", "Java"));
        List<String> list2 = new ArrayList<>(Arrays.asList("Hello", "World"));
        List<String> list3 = new ArrayList<>(Arrays.asList("Hello", "Python"));

        System.out.println("list1 contains all of list2: " + list1.containsAll(list2));
        System.out.println("list1 contains all of list3: " + list1.containsAll(list3));
    }
}

Output:

list1 contains all of list2: true
list1 contains all of list3: false

2. 2つのリストが互いにすべての要素を含むことを確認する(2つのリストが同じか)

両方のリストに対してそれぞれ containsAll() で互いの包含可否を確認すれば、互いに同じ要素をすべて持っているか確認できます。

別の方法として、リストのサイズがあるときにあるリストが他のリストのすべての要素を含む場合、その逆の場合もすべて含むと見なすことができます。

以下のように、2つの方法でリストの要素がすべて同じであることを確認できます。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Example2 {

    public static void main(String[] args) {

        List<String> list1 = new ArrayList<>(Arrays.asList("Hello", "World", "Java"));
        List<String> list2 = new ArrayList<>(Arrays.asList("Java", "World", "Hello"));

        if (list1.containsAll(list2) && list2.containsAll(list1)) {
            System.out.println("list1 is equal to list2");
        }

        if (list1.size() == list2.size() && list1.containsAll(list2)) {
            System.out.println("list1 is equal to list2 (same size)");
        }
    }
}

Output:

list1 is equal to list2
list1 is equal to list2 (same size)
codechachaCopyright ©2019 codechacha