Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Các phương thức mới thêm vào lớp Arrays trong Java 9

Lớp Arrays chứa nhiều phương thức thao tác mảng và phương thức factory tĩnh cho phép xem mảng như list. Java 9 thêm 3 phương thức quan trọng vào lớp Arrays: Arrays.equals(), Arrays.compare() và Arrays.mismatch().

Arrays.equals()

Trong Java 9, một số phương thức nạp chồng (overloaded) được thêm vào Arrays.equals(). Các phương thức mới nhận tham số fromIndex và toIndex cho hai mảng cung cấp. Các phương thức này kiểm tra sự bằng nhau của hai mảng dựa trên vị trí chỉ số tương đối.

Cú pháp

public static boolean equals(int[] a, int aFromIndex, int aToIndex, int[] b, int bFromIndex, int bToIndex)

Trả về true nếu hai mảng int và phạm vi chỉ định bằng nhau. Phương thức thứ hai hoạt động tương tự cho mảng char.

Ví dụ

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();
    }
}

Kết quả

false
true
true

Arrays.compare()

Trong Java 9, thêm tham số fromIndex/toIndex cho Arrays.compare() để so sánh vị trí tương đối.

Cú pháp

public static int compare(int[] a, int aFromIndex, int aToIndex, int[] b, int bFromIndex, int bToIndex)

So sánh hai mảng int theo thứ tự từ điển (lexicographically) trên phạm vi chỉ định.

Ví dụ

import java.util.Arrays;

public class LexicographicalArraysTest {
    public static void main(String args[]) {
        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));
    }
}

Kết quả

0
0
1

Arrays.mismatch()

Trong Java 9, các phương thức nạp chồng của Arrays.mismatch() cho phép tìm và trả về chỉ số của sự khác biệt đầu tiên giữa hai đoạn mảng.

Cú pháp

public static int mismatch(int[] a, int aFromIndex, int aToIndex, int[] b, int bFromIndex, int bToIndex)

Tìm và trả về chỉ số tương đối (relative index) của mismatch đầu tiên giữa hai mảng int trên phạm vi chỉ định. Trả về -1 nếu không tìm thấy mismatch. Chỉ số trong khoảng 0 (inclusive) đến độ dài (inclusive) của phạm vi nhỏ hơn.

Ví dụ

import java.util.Arrays;

public class MismatchMethodTest {
    public static void main(String[] args) {
        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));
    }
}

Kết quả

-1
2
-1
2
0