FC2ブログ
HOME   »  スポンサー広告  »  スポンサーサイト   »  Java  »  [Java]配列の比較

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Java]配列の比較

2つの配列が等しいかどうかを比較する方法はいくつかある。
public class Main {
    public static void main(String[] args) {
        int[] array1 = new int[]{0, 1, 2, 3, 4};
        int[] array2 = new int[]{0, 1, 2, 3, 4};
        System.out.println("==:" + (array1 == array2));
        System.out.println("equals:" + (array1.equals(array2)));
        System.out.println("Arrays.equals:" + (Arrays.equals(array1, array2)));
    }
}
上記では内容が同じint配列array1とarray2を比較している。

上記の実行結果は以下の通り。


==:false
equals:false
Arrays.equals:true


配列は参照型なので、比較演算子==では同一性(同じインスタンスかどうか)の比較となり、結果はfalseとなる。
配列のequalsメソッドはスーパークラスであるObjectクラスのequalsメソッドがそのまま実行されるが、これは比較演算子==による比較と等価である為やはり結果はfalseとなる。
Arraysクラスのequalsメソッドは等価性(内容が同じであるかどうか)の比較となり、結果はtrueとなる。

では、下記の例ではどうなるか。
public class Main {
    public static void main(String[] args) {
        Object[] array1 = new Object[]{new int[]{0, 1, 2, 3, 4}, new int[]{5, 6, 7, 8, 9}};
        Object[] array2 = new Object[]{new int[]{0, 1, 2, 3, 4}, new int[]{5, 6, 7, 8, 9}};
        System.out.println("==:" + (array1 == array2));
        System.out.println("equals:" + (array1.equals(array2)));
        System.out.println("Arrays.equals:" + (Arrays.equals(array1, array2)));
        System.out.println("Arrays.deepEquals:" + (Arrays.deepEquals(array1, array2)));
    }
}
上記の実行結果は以下の通り。


==:false
equals:false
Arrays.equals:false
Arrays.deepEquals:true


比較演算子==とequalsメソッドの結果は先の例と同じ。
Arraysクラスのequalsメソッドの結果が異なるが、Arraysクラスのequalsメソッドでは要素の比較は要素のequalsメソッドで行われる為、上記の例では要素=配列のequalsメソッドによる比較(同一性比較)となり、結果がfalseとなっている。
入れ子配列の要素まで等価性比較を行いたい場合はArraysクラスのdeepEqualsメソッドを使用する。上記の結果でもtrueとなっている。


関連記事
Comment
Trackback
Trackback URL
Comment Form
管理者にだけ表示を許可する
プロフィール

まさお

Author:まさお
プログラミングは趣味レベルなので、お手柔らかに。

ブログランキング
ブログランキング参加中。是非クリックお願いします。


にほんブログ村 IT技術ブログ Androidアプリ開発へ

人気ブログランキングへ

ブログランキング



ブログ王

ブログランキング【ブログの惑星】

プログラム人気ブログランキング
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。