Java で配列を比較する
-
==
演算子を使用して Java の配列を比較する -
Java で
Arrays.equals()
メソッドを使用して配列を比較する -
Java で
Arrays.deepEquals()
メソッドを使用して配列を比較する -
for
ループを使用して 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つのさまざまなオブジェクトを参照する array1
と array2
の 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
メソッドには、array1
と array2
という名前の 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つの要素
element1
とelement2
は完全に等しくなります。- 両方の配列の型がオブジェクト参照である場合、
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。