Java.util.Arrays类里的方法们

175 阅读2分钟

该类包含用于操作数组的各种方法(例如排序和搜索)。 此类还包含一个静态工厂,允许将数组视为列表。

1. binarySearch(int[] a, int key)

public class Test01 {
    public static void main(String[] args) {
        int[] arr = {8,1,2,3,4,5,6,7,};
        int x1 = Arrays.binarySearch(arr,3);
        System.out.println(x1);
    }
}

结果为:3

2. binarySearch(int[] a, int fromIndex,int toIndex,int key)

如果要搜索的元素key在指定的范围内,则返回搜索键的索引;否则返回-1或者”-“(插入点)。

1.该搜索键在范围内,但不在数组中,由1开始计数;

2.该搜索键在范围内,且在数组中,由0开始计数;

3.该搜索键不在范围内,且小于范围内元素,由1开始计数;

4.该搜索键不在范围内,且大于范围内元素,返回-(endIndex + 1);(特列)

public class Test01 {
    public static void main(String[] args) {
        int[] arr = {1,2,4,6,7,8};
        int x1 = Arrays.binarySearch(arr,1,5,5);
        int x2 = Arrays.binarySearch(arr,1,5,6);
        int x3 = Arrays.binarySearch(arr,1,5,9);
        int x4 = Arrays.binarySearch(arr,1,3,10);
        System.out.println(x1);
        System.out.println(x2);
        System.out.println(x3);
        System.out.println(x4);
    }
}

结果为:-4 3 -6 -4

3. compare(int[] a, int[] b)

image.png

public class Test01 {
    public static void main(String[] args) {
        int[] arr1 = {1,2,4,6,7,8};
        int[] arr2 = {8,2,4,6,7,9,5};
        int[] arr3 = {1,2,4,6,7,8};
        int[] arr4 = {};
        int[] arr5 = null;
        System.out.println( Arrays.compare(arr1,arr2));
        System.out.println( Arrays.compare(arr1,arr3));
        System.out.println( Arrays.compare(arr1,arr3));
        System.out.println( Arrays.compare(arr1,arr5));
        System.out.println( Arrays.compare(arr4,arr5));
    }
}

结果为:-1 0 0 1 1

4. copyOf(int[] original, int newLength)

image.png 数组动态扩容:

public class Test01 {
    public static void main(String[] args) {
        int[] arr = {1,2,4,6,7,8};
        System.out.println( arr.length);
        arr = Arrays.copyOf(arr,8);
        System.out.println(arr.length);
    }
}

结果为:6 8

5. copyOfRange(int[] original, int from , int to)

image.png

public class Test01 {
    public static void main(String[] args) {
        int[] arr = {1,2,4,6,7,8};
        System.out.println(Arrays.toString(arr));
        int[] arr2 = Arrays.copyOfRange(arr,1,3);
        System.out.println(Arrays.toString(arr2));
    }
}

结果为:[1, 2, 4, 6, 7, 8] [2, 4]

6. equals(int[] a, int[] b)

image.png

public class Test01 {
    public static void main(String[] args) {
        int[] arr1 = {1,2,4,6,7,8};
        int[] arr2 = {4,6,7};
        System.out.println(Arrays.equals(arr1,arr2));
        System.out.println(Arrays.equals(arr1,2,4,arr2,0,2));
    }
}

结果为:false true

7. sort(int[] a)

image.png

public class Test01 {
    public static void main(String[] args) {
        int[] arr = {8,5,4,6,7,21,25};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

结果为:[4, 5, 6, 7, 8, 21, 25]

8. toString(int[] a)

返回指定数组内容的字符串表示形式。

public class Test01 {
    public static void main(String[] args) {
        int[] arr = {8,5,4,6,7,21,25};
        System.out.println(arr);
        System.out.println(Arrays.toString(arr));
    }
}

结果为:[I@49e4cb85 [8, 5, 4, 6, 7, 21, 25]