Java 基礎–Arrays工具類詳解

Arrays 是 JDK 提供的操作數組的工具類,Arrays 類提供瞭動態創建、訪問和操作 Java 數組的方法。此類還包含一個允許將數組作為列表來查看的靜態工廠。

1、數組轉換成字符串

public static String toString(T [] a)

如:

int[] a = {2,8,51,13,46,11,22};
System.out.println(Arrays.toString(a));

2、數組轉換成集合

(1)asList

public static <T> List<T> asList(T... a)

例:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
        System.out.println(list);

1)該方法適用於對象型數據的數組(String、Integer…),該方法不要使用於基本數據類型的數組(byte,short,int,long,float,double,boolean);
2)該方法將數組與List列表鏈接起來:當更新其一個時,另一個自動更新;
3)不支持add()、remove()、clear()等方法;
4)用此方法得到的List的長度是不可改變的;
5)如果你的List隻是用來遍歷,就用Arrays.asList();如果你的List還要添加或刪除元素, 就new一個java.util.ArrayList,然後一個一個地添加或刪除元素;
6)這個ArrayList不是java.util包下的,而是java.util.Arrays.ArrayList。它是Arrays類自己定義的一個靜態內部類,這個內部類沒有實現add()、remove()方法,而是直接使用它的父類AbstractList的相應方法。

(2)stream 流操作

public static IntStream stream(int[] array)

例:

int[] a = {2,8,51,13,46,11,22};
IntStream stream = Arrays.stream(a);
System.out.println(Arrays.toString(stream.toArray()));
System.out.println(Arrays.toString(a));

將數組轉為流式,對array進行流式處理,可用一切流式處理的方法。

(3)Collections.addAll()

3、對數組進行升序排列

public static void sort(T [] a)

例:

int[] a = {20, 3, 32, 1, 72, 26, 35};
Arrays.sort(a);

4、判斷數組是否相等

public static boolean equals(T[] a, T[] a2)

例:

int[] a = {20, 3, 32, 1, 72, 26, 35};
int[] b = {3, 5, 7, 8, 54, 23, 9};
boolean boo = Arrays.equals(a, b);

比較的原則是長度相等,元素相等。

5、所有元素賦特定值

// 用val替換數組指定范圍的值
public static void fill(T[] a, int fromIndex, int toIndex, T val)

例:

int[] a = {1, 2, 3, 4};
Arrays.fill(a, 0,2,5);

6、對數組復制

public static char[] copyOf(char[] original, int newLength)

例:

int[] b = {3, 5, 7, 8, 54, 23, 9};
int[] d = Arrays.copyOf(b, b.length);

Arrays 的 copyOf() 方法傳回的數組是新的數組對象,改變傳回數組中的元素值,不會影響原來的數組。
copyOf() 的第二個自變量指定要建立的新數組長度,如果新數組的長度超過原數組的長度,則保留數組默認值。

7、查詢數組下標

public static int binarySearch(byte[] a, byte key)     // 查詢元素第一次出現的位置

例:

int[] b = {3, 5, 7, 8, 9, 23, 54};
int i = Arrays.binarySearch(b, 5);

使用二分搜索法來搜索指定的數組,方法返回要搜索元素的索引值。
註:必須在進行此調用之前對數組進行排序(sort 方法)。如果沒有對數組進行排序,則結果是不明確的。如果數組包含多個帶有指定值的元素,則無法保證找到的是哪一個。
查找效率比一般的從數組中從左到右挨個挨個的查找的平均查找時間要快。

8、返回數組 hashcode 值

public static int hashCode(int a[]);    // 返回數組的hashCode值

例:

int[] a = {1, 2, 3, 4};
System.out.println(Arrays.hashCode(a));
// 結果:955331

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: