本記事では、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