一、簡介
全類名:java.util.Arrays
描述:
- 此類包含用來操作陣列(比如排序和搜索)的各種方法,
- 此類還包含一個允許將陣列作為串列來查看的靜態工廠,
注意:
- 除非特別注明,否則如果指定陣列參考為'null',則此類中的方法都會拋出'NullPointerException',
- Arrays類中的方法都是'static'修飾的靜態方法,在使用的時候可以直接使用類名進行呼叫,而'不用'使用物件來呼叫(注意:是'不用'而不是'不能'),
二、常用方法
Ⅰ、列印陣列
方法:
- toString(Object[] a):將陣列物件的內容轉換轉換成字串,
- deepToString(Object[] a):可以將多維陣列物件的內容轉換轉換成字串,
示例:
public static void main(String[] args) {
int[][] arrayObject = {{1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}};
System.out.println(Arrays.toString(arrayObject));//[[I@5674cd4d, [I@63961c42, [I@65b54208, [I@1be6f5c3, [I@6b884d57]
System.out.println(Arrays.deepToString(arrayObject));//[[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]
}
Ⅱ、陣列元素排序
方法:
- sort(Object[] a):將陣列物件的元素按升序排序,排序規則依據該種元素的類在實作Comparable介面的compareTo方法時的實作邏輯,
- sort(T[] a, Comparator<? super T> c):將陣列物件的元素按照自定義的排序規則進行排序,排序規則通過傳入一個自定義的Comparator介面的實作類物件引數來指定,
示例:
public static void main(String[] args) {
int[] intArr = {1, 5, 3, 2, 4};
Arrays.sort(intArr);
System.out.println(Arrays.toString(intArr));//[1, 2, 3, 4, 5]
int[][] arrayObject = {{1, 2}, {1}, {1, 2, 3, 4}, {1, 2, 3}, {3, 4}};
/*
根據內層陣列的長度對二維陣列的內層陣列進行排序,
匿名內部類可以用Lambda運算式簡化為:(o1, o2) -> Integer.compare(o1.length, o2.length)
或者替換為:Comparator.comparingInt(o -> o.length)
*/
Arrays.sort(arrayObject, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return Integer.compare(o1.length, o2.length);
}
});
System.out.println(Arrays.deepToString(arrayObject));//[[1], [1, 2], [3, 4], [1, 2, 3], [1, 2, 3, 4]]
}
Ⅲ、二分法查找元素
方法:
- binarySearch(Object[] a, Object key):用二分查找演算法在給定陣列中搜索給定值的物件,若存在則回傳其下標,若不存在則回傳負數,
注意:
- 必須在呼叫binarySearch方法之前先對陣列進行排序(通過sort方法等),如果沒有對陣列進行排序,則結果是不確定的,
- 如果陣列包含多個帶有指定值的元素,則無法保證找到的是哪一個,
示例:
public static void main(String[] args) {
int[] intArr = {1, 5, 3, 2, 4};
/* 必須在呼叫binarySearch方法之前先對陣列進行排序 */
Arrays.sort(intArr);
System.out.println(Arrays.binarySearch(intArr, 3));//2
}
Ⅳ、填充元素
方法:
-
fill(Object[] a, Object val):將陣列的所有元素用指定的值進行替換,
-
fill(Object[] a, int fromIndex, int toIndex, Object val):將陣列的指定起始下標到指定截止下標前的所有元素用指定的值進行替換,起始下標的元素會被替換,截止下標的元素不會被替換,
示例:
public static void main(String[] args) {
int[] intArr = {1, 5, 3, 2, 4};
Arrays.fill(intArr, 1, 3, 6);
System.out.println(Arrays.toString(intArr));//[1, 6, 6, 2, 4]
Arrays.fill(intArr, 7);
System.out.println(Arrays.toString(intArr));//[7, 7, 7, 7, 7]
}
Ⅴ、陣列轉換List
方法:
- asList(T... a):將一組同型別的引數轉換為List(ArrayList)集合,
示例:
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
/* List集合轉陣列 */
Integer[] array = list.toArray(new Integer[0]);
System.out.println(Arrays.toString(array));//[1, 2, 3, 4, 5]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/209840.html
標籤:Java
上一篇:技術點7:Servlet程式
