logo

Java で 2 つの配列を比較するには?

Java では、次のことができます。 2 つの配列を比較する 配列の各要素を比較することによって。ジャワ 配列 クラスには、次の目的で使用される 2 つの事前定義メソッドが用意されています。 Java で 2 つの配列を比較する

このセクションでは、次のことを学びます 2 つの配列を比較する方法 を使用して Arrays.equals() 方法と Arrays.deepEquals() 方法。これに合わせて、私たちも学んでいきます 2 つの配列間の詳細な比較を実行する方法 適切な例とともに。

次の場合、2 つの配列は等しいです。

  • これらは同じタイプです。
  • それらは同じ数の要素を持っています。
  • 両方の配列内の対応する要素のペアは等しい必要があります。
  • 要素の順序は同じである必要があります。
  • 2 つの配列参照は、null の場合は等しいと見なされます。

このトピックに移る前に、まず次の例を検討し、出力を推測してください。

ArrayEqualsExample1.java

リストソートJava
 public class ArrayEqualsExample1 { public static void main (String[] args) { //defining arrays to be compare int[] a1 = new int[] {1, 2, 3, 4, 5, 6, 7, 8}; int[] a2 = new int[] {1, 2, 3, 4, 5, 6, 7, 8}; //comparing references using == operator //works the same as a1.equals(a2) if (a1 == a2) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

出力:

 Arrays are not equal. 

上の例では、a1 と a2 は 2 つの異なるオブジェクトの 2 つの参照です。 2 つの参照変数を比較すると、次の出力が得られます。 配列は等しくない、 一方、両方の配列は同じ長さであり、同じ要素を持ちます。等号 (==) 演算子がそれらをオブジェクトとして比較するため、目的の出力が得られません。

ここで、2 つの配列を比較するオプションしかありません。 配列の内容(要素)を比較します。 。配列の内容を比較する方法を見てみましょう。

要素を一つずつ比較してみると良いでしょう。配列 Java の内容を比較するには 配列 クラスには、2 つの配列を比較するための次の 2 つのメソッドが用意されています。

Javaそれ以外の場合
  • メソッド
  • deepEquals() メソッド

Arrays.equals() メソッド

ジャワ 配列 クラスが提供するのは、 等しい() 2 つの配列を比較するメソッド。配列の各値を反復処理し、equals() メソッドを使用して要素を比較します。

構文:

 public static boolean equals(int[] a1, int[] a2) 

比較する 2 つの配列 a1 と a2 を解析します。このメソッドは、配列が等しい場合は true を返し、それ以外の場合は false を返します。の 配列クラス には、さまざまなプリミティブ型のオーバーロードされたequals()メソッドのリストと、オブジェクト型のオーバーロードされたequals()メソッドのリストがあります。

mysql更新参加

注: オブジェクトの配列を使用するときは、equals() メソッドをオーバーライドすることを忘れないでください。それ以外の場合は、Object クラスの equals() メソッドによって返される出力を取得します。

ArrayEqualsExample2.java

 import java.util.Arrays; public class ArrayEqualsExample2 { public static void main (String[] args) { //defining array to compare int[] array1 = new int[] {'a', 'b', 'c', 'd', 'e'}; int[] array2 = new int[] {'a', 'b', 'c', 'd', 'e'}; //comparing two arrays using equals() method if (Arrays.equals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

出力:

 Arrays are equal. 

別の例を見てみましょう。

ArrayEqualsExample3.java

 import java.util.Arrays; public class ArrayEqualsExample3 { public static void main (String[] args) { //defining arrays to compare int[] array1 = new int [] {21, 32, 36, 47}; int[] array2 = new int [] {11, 22, 33, 44}; int[] array3 = new int [] {21, 32, 36, 47}; System.out.println('Are array1 and array2 equal?' + Arrays.equals(array1, array2)); System.out.println('Are array1 and array3 equal?' + Arrays.equals(array1, array3)); } } 

出力:

Javaの期間
 Are array1 and array2 equal? false Are array1 and array3 equal? true 

我々は、 Arrays.equals() メソッドは配列の要素を比較します。ここで、配列にネストされた配列や、異なるオブジェクトを参照しているが同じ値を持つ他の参照がある場合はどうなるのかという疑問が生じます。

次の例を通してそれを理解しましょう。

ArrayEqualsExample4.java

 import java.util.Arrays; public class ArrayEqualsExample4 { public static void main (String[] args) { //defining array to compare String[] inarray1 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; String[] inarray2 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; Object[] array1 = {inarray1}; // array1 have only one element Object[] array2 = {inarray2}; // array2 also have only one element //comparing two arrays using equals() method if (Arrays.equals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

出力:

私のライブクリケットの代替品
 Arrays are not equal. 

上の例では、equals() メソッドが詳細な比較を実行できないことがわかります。この問題を解決するために、Java Arrays クラスは 2 つの配列を詳細に比較する別のメソッド deepEquals() を提供します。

Arrays.deepEquals() メソッド

ジャワ 配列 クラスは別のメソッドを提供します deepEquals() 配列を詳細に比較します。ここで、深く比較とは、任意の深さの 2 つのネストされた配列を比較できることを意味します。 2 つの配列オブジェクト参照 e1 と e2 は、次の条件のいずれかを保持する場合、完全に等価です。

  • e1=e2
  • equals(e2) は true を返します。
  • e1 と e2 が両方とも同じプリミティブ型である場合、メソッド Arrays.equals(e1, e2) のオーバーロードは true を返します。
  • e1 と e2 が両方ともオブジェクト参照型の配列である場合、メソッド Arrays.deepEquals(e1, e2) は true を返します。

構文:

 public static boolean deepEquals(Object[] a1, Object[] a2) 

このメソッドは、比較する 2 つの配列 a1 と a2 を解析します。両方の配列が完全に等しい場合は true を返し、それ以外の場合は false を返します。

プログラムを作成し、 deepEquals() Arrays クラスのメソッド。

ArrayEqualsExample5.java

 import java.util.Arrays; public class ArrayEqualsExample5 { public static void main (String[] args) { //defining array to compare String[] inarray1 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; String[] inarray2 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; Object[] array1 = {inarray1}; // array1 have only one element Object[] array2 = {inarray2}; // array2 also have only one element //comparing two arrays using equals() method if (Arrays.deepEquals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

出力:

 Arrays are equal.