Arrays类可以包含用于操纵数组的各种方法,还可以包含允许数组以列表形式查看的静态工厂方法。Java 9向Arrays类添加了三个重要的方法:Arrays.equals(),Arrays.compare() 和Arrays.mismatch()。
Arrays.equal()-在Java 9中,很少将重载方法添加到Arrays.equals() 方法中。新方法采用两个提供的数组的fromIndex 和toIndex 参数。这些方法根据两个数组的相对索引位置检查两个数组的相等性。
public static boolean equals(int[] a, int aFromIndex, int aToIndex, int[] b, int bFromIndex, int bToIndex)
在上面的语法中,如果两个指定的int数组和超出指定范围的另一个数组相等,则该方法返回true。第二种方法对字符数组的工作方式相同。
import java.util.Arrays; public class CompareArrayTest { public static void arrayEqualsTest() { int[] existRows = {0, 1, 2, 3, 4, 5}; int[] newRows = {3, 4, 5, 1, 2, 0}; System.out.println(Arrays.equals(existRows, newRows)); System.out.println(Arrays.equals(existRows, 1, 3, newRows, 3, 5)); System.out.println(Arrays.equals(existRows, 3, 5, newRows, 0, 2)); } public static void main(String args[]) { CompareArrayTest.arrayEqualsTest(); } }
输出结果
false true true
Arrays.compare()-在Java 9中,几乎没有向Arrays.compare()方法添加参数。使用fromIndex / toIndex参数用于相对位置比较。
public static int compare(int[] a, int aFromIndex, int aToIndex, int[] b, int bFromIndex, int bToIndex)
在以上语法中,该方法按字典顺序 在指定范围内比较两个int数组。
import java.util.Arrays; public class LexicographicalArraysTest { public static void main(String args[]) { LexicographicalArraysTest.compareSliceArraysTest(); } public static void compareSliceArraysTest() { int[] tomMarks = {5, 6, 7, 8, 9, 10}; int[] daisyMarks = {5, 6, 7, 10, 9, 10}; int[] maryMarks = {5, 6, 7, 8}; System.out.println(Arrays.compare(tomMarks, 0, 3, daisyMarks, 0, 3)); System.out.println(Arrays.compare(tomMarks, 0, 4, maryMarks, 0, maryMarks.length)); System.out.println(Arrays.compare(daisyMarks, 0, 4, maryMarks, 0, maryMarks.length)); } }
输出结果
0 0 1
Arrays.mismatch()-在Java 9中,Arrays.mismatch()方法还有其他重载方法,使我们能够查找并返回两个数组切片之间的第一个不匹配索引。
public static int mismatch(int[] a, int aFromIndex, int aToIndex, int[] b, int bFromIndex, int bToIndex)
在以上语法中,该方法查找并返回指定范围内两个int数组之间的第一个不匹配项的相对 索引 。如果未发现不匹配,则返回-1。索引范围为0(含)到较小范围的长度(含)。
import java.util.Arrays; public class MismatchMethodTest { public static void main(String[] args) { MismatchMethodTest.mismatchArraysTest(); } public static void mismatchArraysTest() { int[] a = {1, 2, 3, 4, 5}; int[] b = {1, 2, 3, 4, 5}; int[] c = {1, 2, 4, 4, 5, 6}; System.out.println(Arrays.mismatch(a, b)); System.out.println(Arrays.mismatch(a, c)); System.out.println(Arrays.mismatch(a, 0, 2, c, 0, 2)); System.out.println(Arrays.mismatch(a, 0, 3, c, 0, 3)); System.out.println(Arrays.mismatch(a, 2, a.length, c, 2, 5)); } }
输出结果
-1 2 -1 2 0