Java | 配列比較メソッド

Java Java
スポンサーリンク

初心者向けに「配列の比較」について、例を交えてわかりやすく解説します。順番に理解できるように、手を動かしながら学べる内容にしています。


1. 配列の「==」は使えない

Javaでは、変数に == を使うと、値が同じかではなく「同じものを指しているか」 を調べます。

int[] a = {85, 78, 92};
int[] b = {85, 78, 92};

System.out.println(a == b); // false
Java
  • ここで false になるのは、a と b は同じ中身でも別の配列だからです。
  • 「中身が同じかどうか」を知りたい場合は別の方法を使う必要があります。

2. 1次元配列の比較:Arrays.equals

Javaには便利な Arrays.equals メソッドがあります。これを使うと、配列の中身を1つずつ比べて同じかどうか を調べられます。

import java.util.Arrays;

public class ArrayCompareExample {
    public static void main(String[] args) {
        int[] a = {85, 78, 92};
        int[] b = {85, 78, 92};
        int[] c = {85, 92, 78};

        System.out.println(Arrays.equals(a, b)); // true
        System.out.println(Arrays.equals(a, c)); // false
    }
}
Java
  • a と b は順番も要素も同じ → true
  • a と c は順番が違う → false

ポイント:1次元配列は Arrays.equals で十分!


3. 2次元以上の配列の比較:Arrays.deepEquals

2次元配列(配列の中に配列がある場合)は、Arrays.equals では正しく比較できません。

import java.util.Arrays;

public class ArrayDeepCompareExample {
    public static void main(String[] args) {
        int[][] a = {{85, 78}, {92, 58}};
        int[][] b = {{85, 78}, {92, 58}};

        System.out.println(Arrays.equals(a, b));      // false
        System.out.println(Arrays.deepEquals(a, b));  // true
    }
}
Java
  • Arrays.equals(a, b) → false になる理由:
    • a と b の要素は「配列」なので、equals では中身を見ずに参照(同じオブジェクトかどうか)を比べるだけ。
  • Arrays.deepEquals(a, b) → true になる理由:
    • 配列の中の配列まで再帰的に比べてくれるので、中身が全て同じなら true。

4. 練習問題(手を動かして理解)

問題1

次の配列 xy は同じか、プログラムで確認してみましょう。

int[] x = {10, 20, 30};
int[] y = {10, 20, 30};
Java

問題2

次の2次元配列 m1m2 は同じか、deepEquals を使って確認しましょう。

int[][] m1 = {{1,2},{3,4}};
int[][] m2 = {{1,2},{3,4}};
Java

ヒント

  • 1次元配列 → Arrays.equals(x, y)
  • 2次元配列 → Arrays.deepEquals(m1, m2)

まとめ

比較方法使う場面結果の意味
==配列が「同じオブジェクトか」確認したいとき参照が同じなら true、違うなら false
Arrays.equals(a, b)1次元配列の中身を比べたいとき中身が全て同じなら true
Arrays.deepEquals(a, b)多次元配列の中身まで比べたいとき中身が全て同じなら true
  • 初心者はまず 1次元配列なら Arrays.equals、多次元なら Arrays.deepEquals を覚えると迷わないです。

💡 ちょっと応用

文字列配列やオブジェクト配列でも同じです。ただしオブジェクト配列の場合は、そのオブジェクトの equals() が正しく実装されていることが前提です。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました