2つのリストがJavaで等しいかどうかを確認します
この投稿では、Javaで2つのリストが等しいかどうかを確認する方法について説明します。リストは、プリミティブタイプのリストまたはオブジェクトのリストの場合があります。 2つのリストは、まったく同じ要素が同じ順序で含まれている場合、等しいと定義されます。
1.使用する List.equals()
方法
プリミティブ型の2つのリストを比較して等しいかどうかを確認する簡単な解決策は、 List.equals()
方法。両方のリストのサイズが同じで、両方のリストの対応する要素のペアがすべて等しい場合は、trueを返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import java.util.List; public class Main { public static boolean isEqual(List<Integer> x, List<Integer> y) { if (x == null) { return y == null; } return x.equals(y); } public static void main(String[] args) { List<Integer> x = List.of(1, 2, 3, 4, 5); List<Integer> y = List.of(1, 2, 3, 4, 5); boolean isEqual = isEqual(x, y); if (isEqual) { System.out.println("Both lists are equal"); } else { System.out.println("Both lists are not equal"); } } } |
出力:
Both lists are equal
2.使用する Objects.equals()
方法
または、 Objects.equals()
Javaでプリミティブ型の2つのリストを比較するためのメソッド。引数が互いに等しい場合はtrueを返し、そうでない場合はfalseを返します。このメソッドを使用する利点は、nullセーフであり、nullを明示的に処理する必要がないことです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import java.util.List; import java.util.Objects; public class Main { public static void main(String[] args) { List<Integer> x = List.of(1, 2, 3, 4, 5); List<Integer> y = List.of(1, 2, 3, 4, 5); boolean isEqual = Objects.equals(x, y); //nullセーフ if (isEqual) { System.out.println("Both lists are equal"); } else { System.out.println("Both lists are not equal"); } } } |
出力:
Both lists are equal
注目に値する Objects.equals()
呼び出し List.equals()
内部的にメソッド。
1 2 3 |
public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b)); } |
また、使用することができます Objects.deepEquals()
引数が互いに「完全に」等しい場合はtrueを返し、そうでない場合はfalseを返すメソッド。
3.オブジェクトのリストで同等性を確認します
Javaでオブジェクトの2つのリストを比較するには、次のいずれかを使用できます。 List.equals(…)
また Objects.equals(…)
上記のように、メソッド。ただし、次のことも行う必要があります equalsメソッドとhashCodeメソッドをオーバーライドします Javaでそのオブジェクトに対して。次のプログラムはそれを示しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
import java.util.*; class Person { String name; int age; Person(String name, int age) { this.name = name; this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return age == person.age && Objects.equals(name, person.name); } @Override public int hashCode() { return Objects.hash(name, age); } } public class Main { public static void main(String[] args) { List<Person> presidents1 = List.of( new Person("Obama", 60), new Person("Trump", 75), new Person("Biden", 79)); List<Person> presidents2 = List.of( new Person("Obama", 60), new Person("Trump", 75), new Person("Biden", 79)); boolean isEqual = Objects.equals(presidents1, presidents2); if (isEqual) { System.out.println("Both lists are equal"); } else { System.out.println("Both lists are not equal"); } } } |
出力:
Both lists are equal
これで、Javaで2つのリストが等しいかどうかを確認できます。