【Java】配列を比較する

本記事では、Javaで配列を比較するメソッドを3つ紹介します。

3つのメソッドは、すべてArraysクラスのメソッドとなります。

プログラムの一番上にimport java.util.Arrays;を記述しておきましょう。

Arrays.equalsメソッド

Arrays.equalsメソッドは、

配列同士の要素が同じ(true)か否(false)かを返します。

String[] a = {"abc","def","ghi"};
String[] b = {"abc","def","ghi"};
System.out.println(Arrays.equals(a,b)); //true
String[] c = {"abc","def","xyz"};
System.out.println(Arrays.equals(a,c)); //false

文字列の比較などで使われるjava.lang.Objectクラスにあるequalsメソッドの配列バージョンです。

Arrays.mismatchメソッド

Arrays.mismatchメソッドは、

配列同士で異なる最初の要素のインデックス(位置)を返します。

配列同士の要素が同じ場合、-1を返します。

String[] a = {"abc","def","ghi"};
String[] b = {"abc","def","xyz"};
System.out.println(Arrays.mismatch(a,b)); //2
String[] c = {"uvw","def","xyz"};
System.out.println(Arrays.mismatch(a,c)); //0
String[] d = {"abc","def","ghi"};
System.out.println(Arrays.mismatch(a,b)); //-1

Arrays.compareメソッド

Arrays.compareメソッドは、

配列同士で異なる最初の要素を辞書順で比較します。

compare(配列A,配列B)

配列Aが配列Bより、辞書順で早い場合、正の値

配列Aが配列Bより、辞書順で遅い場合、負の値

配列Aと配列Bが、辞書順で同じ場合、0

を返します。

値は、辞書順での差を表しています。

String[] a = {"abc","def","ghi"};
String[] b = {"abc","def","hij"};
System.out.println(Arrays.compare(a,b)); //-1
String[] c = {"abc","abc","ghi"};
System.out.println(Arrays.compare(a,b)); //3
String[] d = {"abc","def","ghi"};
System.out.println(Arrays.compare(a,b)); //0