Java で配列を比較する

Mehvish Ashiq 2023年10月12日
  1. == 演算子を使用して Java の配列を比較する
  2. Java で Arrays.equals() メソッドを使用して配列を比較する
  3. Java で Arrays.deepEquals() メソッドを使用して配列を比較する
  4. for ループを使用して Java の配列を比較する
Java で配列を比較する

今日は、Java の配列を比較するためのさまざまなコードスニペットを作成します。 == 演算子、Arrays.equals()Arrays.deepEquals()、および for ループを含むカスタム関数を使用して Java の配列を比較する方法を説明します。

== 演算子を使用して Java の配列を比較する

サンプルコード:

public class compareArrays {
  public static void main(String[] args) {
    int array1[] = {2, 4, 6};
    int array2[] = {2, 4, 6};
    if (array1 == array2)
      System.out.println("Both arrays are the same");
    else
      System.out.println("Both arrays are not the same");
  }
}

出力:

Both arrays are not the same

main 関数には、2つのさまざまなオブジェクトを参照する array1array2 の 2つの配列があります。したがって、2つの異なる参照変数が比較され、両方の配列が同じではないという結果になります。

Java で Arrays.equals() メソッドを使用して配列を比較する

コード例:

import java.util.Arrays;

public class compareArrays {
  public static void main(String[] args) {
    int array1[] = {2, 4, 6};
    int array2[] = {2, 4, 6};
    if (Arrays.equals(array1, array2))
      System.out.println("Both arrays are the same");
    else
      System.out.println("Both arrays are not the same");
  }
}

出力:

Both arrays are the same

この main メソッドには、array1array2 という名前の 2つの配列も含まれています。ここでは、Arrays Classにある Arrays.equals() メソッドを使用し、2つの配列を取得して、それらのコンテンツを比較します。

比較する必要のある 2つの 2D 配列があるとします。深く比較するために、上記と同じアプローチの利点を得ることができますか?いいえ。

Java Arrays クラスには、int、char などのプリミティブ型用のさまざまな equals() メソッドと、Object クラス用の 1つの equals() メソッドがありますが、これを使用することはできません。2 次元配列を詳細に比較します。

コード例:

import java.util.Arrays;

public class compareArrays {
  public static void main(String[] args) {
    int innerArray1[] = {2, 4, 6};
    int innerArray2[] = {2, 4, 6};
    Object outerArray1[] = {innerArray1};
    Object outerArray2[] = {innerArray2};

    if (Arrays.equals(outerArray1, outerArray2))
      System.out.println("Both arrays are the same");
    else
      System.out.println("Both arrays are not the same");
  }
}

出力:

Both arrays are not the same

deepEquals() メソッドを使用して詳細な比較を行うことができます。これは、2 次元配列がある場合に役立ちます。

Java で Arrays.deepEquals() メソッドを使用して配列を比較する

コード例:

import java.util.Arrays;

public class compareArrays {
  public static void main(String[] args) {
    int innerArray1[] = {2, 4, 6};
    int innerArray2[] = {2, 4, 6};
    Object outerArray1[] = {innerArray1};
    Object outerArray2[] = {innerArray2};

    if (Arrays.deepEquals(outerArray1, outerArray2))
      System.out.println("Both arrays are the same");
    else
      System.out.println("Both arrays are not the same");
  }
}

出力:

Both arrays are the same

deepEquals() メソッドは、詳細な比較に適しています。Arrays.deepEquals() メソッドは、2つの配列が等しいかどうかをチェックします。

これらの 2つの配列は、1 次元、2 次元、または多次元にすることができます。

このメソッドは、提供された配列が等しいかどうかをどのように判断しますか?そのためには、次の点に注意する必要があります。

  • 提供された両方の配列の参照が null の場合、配列は完全に等しくなります。
  • 正確な要素の番号と対応する要素のペアを含む配列を指している場合、2つの配列参照が完全に等しいと宣言できます。
  • 次のリストのいずれかの条件が当てはまる場合、null の可能性がある 2つの要素 element1element2 は完全に等しくなります。
    • 両方の配列の型がオブジェクト参照である場合、Arrays.deepEquals(element1, element2) は true を返します。
    • Arrays.equals(element1, element2) は、両方の配列が正確なプリミティブ型である場合に true を返します。
    • element1 == element2
    • element1.equals(element2) は true を返します。

for ループを使用して Java の配列を比較する

コード例:

public class compareArrays {
  public static boolean compare(int[] array1, int[] array2) {
    boolean flag = true;

    if (array1 != null && array2 != null) {
      if (array1.length != array2.length)
        flag = false;
      else
        for (int i = 0; i < array2.length; i++) {
          if (array2[i] != array1[i]) {
            flag = false;
          }
        }
    } else {
      flag = false;
    }

    return flag;
  }

  public static void main(String[] args) {
    int array1[] = {2, 4, 6};
    int array2[] = {2, 4, 6};

    if (compare(array1, array2))
      System.out.println("Both arrays are the same");
    else
      System.out.println("Both arrays are not the same");
  }
}

出力:

Both arrays are the same

ここでは、2つの配列を int 型にする compare() 関数を記述します。for ループを使用して個々の要素レベルでそれらを比較し、両方の配列が同じ場合は true を返します。それ以外の場合は false。

著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

関連記事 - Java Array