Arrays class can contain various methods for manipulating arrays and also contains static factory methods that allow arrays to view as a list. Java 9 has added three important methods to Arrays class: Arrays.equals(), Arrays.compare() and Arrays.mismatch().
Arrays.equal() − In Java 9, few overloaded methods have added to the Arrays.equals() method. The new methods take fromIndex and toIndex parameters for the two provided arrays. These methods check the equality of the two arrays based on their relative index positions.
public static boolean equals(int[] a, int aFromIndex, int aToIndex, int[] b, int bFromIndex, int bToIndex)
In the above syntax, the method returns true if two specified arrays of ints and over the specified ranges are equal to another. The second method works the same for an array of chars.
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() − In Java 9, few parameters have added to the Arrays.compare() method. With fromIndex/toIndex parameters that are used for relative position comparison.
public static int compare(int[] a, int aFromIndex, int aToIndex, int[] b, int bFromIndex, int bToIndex)
In the above syntax, the method compares two int arrays lexicographically over the specified ranges.
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() −In Java 9, there are other overloaded methods of the Arrays.mismatch() method that enables us to find and return the index of the first mismatch between two slices of arrays.
public static int mismatch(int[] a, int aFromIndex, int aToIndex, int[] b, int bFromIndex, int bToIndex)
In the above syntax, the method finds and returns the relative index of the first mismatch between two int arrays over the specified range. It returns -1 if no mismatch has found. The index in the range of 0 (inclusive) up to the length (inclusive) of the smaller range.
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