1. 程式人生 > 實用技巧 >Arrays 類 常見用法詳解

Arrays 類 常見用法詳解

在陣列的學習中,我們看到陣列只有一個長度可提供引用,就是陣列名.length獲取陣列的長度,那麼有沒有的類和方法可提供陣列操作呢?

Java中提供Arrays 類作為對陣列的操作,Arrays 類存在於util工具類裡,Arrays 類裡靜態方法,可以直接引用。

序號 方法名 方法說明 語法格式 示例
1 ToString 返回指定陣列的內容的字串表示形式 Arrays.toString(array) Arrays.toString(nums),返回陣列
2 Fill 將指定的位元組值分配給指定位元組陣列的每個元素 Arrays.fill(array, val) Arrays.fill(nums,3),把3賦值給nums陣列中的每個元素
Fill 將指定的位元組值分配給指定位元組陣列的指定範圍的每個元素。 Arrays.fill(array, fromIndex, toIndex, val)

Arrays.fill(nums,1,3,10),把10賦值給陣列下標從1開始,個數為3個的元素,

即賦值給陣列元素下標為0,1,2

3 equals 判斷2個數組是否相等,相等返回true,否則為false Arrays.equal(array1, array2) Arrays.equals(nums1, nums2),判斷nums1和nums2是否相等
4 copyof 複製指定的陣列,用零擷取或填充(如有必要),以便複製具有指定的長度 Arrays.copyof(array1, newLength) Arrays.copyof(nums1,3),把陣列的前3個元素複製到新陣列
5 copyfoRange 將指定陣列的指定範圍複製到新陣列中。 Arrays.copyofRange(array, from, to)

Arrays.copyofRange(nums1,3,5),把陣列從下標3開始到下標4的元素複製到新陣列,

下標5為結束位置。

6 binarySearch 使用二叉搜尋演算法搜尋指定陣列 Arrays.binarySearch(array, key) Arrays.binarySearch(nums,3),搜尋nums陣列中元素為3,返回下標值
7 sort 按照數字順序排列指定的陣列。 Arrays.sort(array) Arrays.sort(nums),按照數字順序排列
sort 按升序排列陣列的指定範圍 Arrays.sort(array, from, to) Arrays.sort(nums,1,3),對陣列nums中的1-3元素按照升序排列
8 parallelSort 按照數字順序排列指定的陣列。 Arrays.parallelSort(array) Arrays.parallelSort(nums),按照數字順序排列
按升序排列陣列的指定範圍 Arrays.parallelSort(array, from, to) Arrays.parallelSort(nums,1,3),對陣列nums中的1-3元素按照升序排列
9 hashCode 根據指定陣列的內容返回雜湊碼 Arrays.hashCode(array) Arrays.hashCode(nums),返回nums的雜湊碼

應用

1.ToString方法

import java.util.Arrays;

public class Array03 {
    public static void main(String[] args) {
        int[] num = {1, 3, 2, 88, 50};
        System.out.println(Arrays.toString(num));
    }

}

陣列我們一般通過for-each列印輸出,通過toString方法可以更快速,執行結果:

2.Fill方法

import java.util.Arrays;

public class Array03 {
    public static void main(String[] args) {
        int[] nums = {1, 3, 2, 88, 50};
        Arrays.fill(nums, 6);
        System.out.println(Arrays.toString(nums));
    }

}

把6賦值給nums裡的所有元素,執行結果:

指定只賦值給陣列中下標為0,1的元素,如下:

import java.util.Arrays;

public class Array03 {
    public static void main(String[] args) {
        int[] nums = {1, 3, 2, 88, 50};
        Arrays.fill(nums, 0,2,6);
        System.out.println(Arrays.toString(nums));
    }

}

執行結果:

3.equals方法

import java.util.Arrays;

public class Array03 {
    public static void main(String[] args) {
        int[] nums1 = {1, 3, 2, 88, 50};
        int[] nums2 = {1, 3, 2, 66, 50};
        System.out.println(Arrays.equals(nums1,nums2));
    }

}

執行結果:

4.copyof

import java.util.Arrays;

public class Array03 {
    public static void main(String[] args) {
        int[] nums1 = {1, 3, 2, 88, 50};
        int[] nums2 = Arrays.copyOf(nums1, 3);
        System.out.println(Arrays.toString(nums2));
    }

}

把陣列nums1的前3個元素複製新的陣列num2中,執行結果:

5.copyofRange

import java.util.Arrays;

public class Array03 {
    public static void main(String[] args) {
        int[] nums1 = {1, 3, 2, 88, 50};
        int[] nums2 = Arrays.copyOfRange(nums1, 1,3);
        System.out.println(Arrays.toString(nums2));
    }

}

把陣列num1的下標1開始的元素到下標為2的元素複製到新陣列nums2,這裡的3是結束位置,執行結果:

6.binarySearch方法

import java.util.Arrays;

public class Array03 {
    public static void main(String[] args) {
        int[] nums = {1, 3, 2, 88, 50};
        System.out.println(Arrays.binarySearch(nums,88));
    }

}

查詢陣列中元素為88的索引位置,執行結果:

如果找不到索引位置,返回-1或者”-“(插入點)

7.sort方法

import java.util.Arrays;

public class Array03 {
    public static void main(String[] args) {
        int[] nums = {1, 3, 2, 88, 50};
        Arrays.sort(nums);
        System.out.println(Arrays.toString(nums));
    }

}

對整個陣列進行排序,執行結果

指定陣列範圍進行排序,

import java.util.Arrays;

public class Array03 {
    public static void main(String[] args) {
        int[] nums = {1, 3, 2, 88, 50, 19, 10};
        Arrays.sort(nums,3,6);
        System.out.println(Arrays.toString(nums));
    }

}

對nums陣列下標3到5的元素進行排序,Arrays.sort(nums,3,6)中的6為結束位置。

執行結果:

8.parallelSort方法

import java.util.Arrays;

public class Array03 {
    public static void main(String[] args) {
        int[] nums = {1, 3, 2, 88, 50, 19, 10};
        Arrays.parallelSort(nums);
        System.out.println(Arrays.toString(nums));
    }

}

執行結果:

9.hashCode方法

import java.util.Arrays;

public class Array03 {
    public static void main(String[] args) {
        int[] nums = {1, 3, 2, 88, 50, 19, 10};
        System.out.println(Arrays.hashCode(nums));
    }

}

執行結果

如果兩個陣列相等,他們的雜湊碼也一樣,比如

import java.util.Arrays;

public class Array03 {
    public static void main(String[] args) {
        int[] nums1 = {1, 3, 2, 88, 50, 19, 10};
        int[] nums2 = {1, 3, 2, 88, 50, 19, 10};
        System.out.println(Arrays.hashCode(nums1));
        System.out.println(Arrays.hashCode(nums2));
    }

}

執行結果