【java】Arrays類
導包:import.java.util.Arrays
用途:此類包含用來運算元組的各種方法,比如排序和搜尋。
工具類:
- 一般工具類中的方法都是靜態方法,可以直接使用類名呼叫。
- 同時工具類的構造方法一般會被私有化,因為不允許外界對其建立物件例項化。類在例項化會首先呼叫建構函式對其進行初始化,而如果私有構造的話就無法進行初始化,那麼這個空物件也就沒什麼意義了。
除非特別註明,否則如果指定陣列引用為null,則 此類中的方法都會丟擲 NullPointerException。
1、public static String toString(arr)
- 把陣列轉換成字串進行輸出。
- 引數是陣列,返回的是字串
- 字串表示形式由陣列的元素列表組成,括在方括號("[]")中。相鄰元素用字元 ", "(逗號加空格)分隔。這些元素通過 String.valueOf(short) 轉換為字串。如果 a 為 null,則返回 "null"。
- 原始碼:
public static String toString(int[] a) {
if (a == null) //如果傳入的陣列是null
return "null"; //返回null
int iMax = a.length - 1; //iMax是最大索引
if (iMax == -1) //如果陣列中沒有元素,則返回[]
return "[]";
StringBuilder b = new StringBuilder(); //執行緒不安全,效率高
b.append('['); //將[新增到字串緩衝區
for (int i = 0; ; i++) { //遍歷陣列,判斷語句滅有寫預設true
b.append(a[i]); //把第一元素新增進字串緩衝區
if (i == iMax) //如果索引等於了最大索引值
return b.append(']').toString(); //將]新增到字串緩衝區,在轉換成字串並返回
b.append(", "); //如果不等於最大索引就將,新增到緩衝區。
}
}
2、public static void sort(arr)
- 對陣列元素進行排序操作,預設由小到大排序。
- 該方法的引數不僅可以是基礎資料型別的陣列,也可以是物件引用的陣列。當對物件進行排序時,陣列中的所有元素都必須實現 Comparable 介面。即陣列中的所有元素都必須是可相互比較的(也就是說,對於陣列中的任何 e1 和 e2 元素而言,e1.compareTo(e2) 不得丟擲 ClassCastException)。
- 同時還可以指定陣列中需要排序的元素的索引範圍。
- 原始碼:快速排序
3、public static int binarySearch(int [] a, int key)
- 使用二分搜尋法來搜尋指定型別陣列,以獲得指定的值。
- 前提:必須在進行此呼叫之前對陣列進行排序(通過 sort() 方法)。如果沒有對陣列進行排序,則結果是不確定的。如果陣列包含多個帶有指定值的元素,則無法保證找到的是哪一個。
- 如果它包含在陣列中,則返回搜尋鍵的索引;否則返回 (-(插入點) - 1)。插入點被定義為將鍵插入陣列的那一點:即第一個大於此鍵的元素索引,如果陣列中的所有元素都小於指定的鍵,則為a.length。注意,這保證了當且僅當此鍵被找到時,返回的值將 >= 0。
- 原始碼
public static int binarySearch(int[] a, int key) {
return binarySearch0(a, 0, a.length, key);
}
//也可以是從一段區間中查詢
public static int binarySearch(int[] a, int fromIndex, int toIndex,
int key) {
rangeCheck(a.length, fromIndex, toIndex);
return binarySearch0(a, fromIndex, toIndex, key);
}
//注意,Java中個給的二分,只是說這段區間中有沒有,並返回該index,而不是返回第一個出現的位置或者是最後一次出現的位置
private static int binarySearch0(int[] a, int fromIndex, int toIndex,
int key) {
int low = fromIndex;
int high = toIndex - 1;
while (low <= high) {
int mid = (low + high) >>> 1;
int midVal = a[mid];
if (midVal < key)
low = mid + 1;
else if (midVal > key)
high = mid - 1;
//居然是找到了就返回
else
return mid; // key found
}
//並不是找不到就返回-1,而是-(low + 1),所以區間查詢的話,判有沒有要看的是該index的正負
return -(low + 1); // key not found.
}
相關文章
- Java容器工具類ArraysJava
- JAVA基礎--Arrays類Java
- 14.Java-Arrays(類)、基本型別包裝類、Integer(類)Java型別
- Arrays工具類
- 18_Arrays類
- Java中Arrays作用Java
- Java Arrays.sort()Java
- 集合框架3-Arrays 類框架
- java中的Arrays這個工具類你真的會用嗎Java
- 【Java】Arrays.copyOf & System.arraycopyJava
- API的使用(3)Arrays 類,Math類,三大特性--繼承API繼承
- Java 中,Arrays 轉 List 的那些坑Java
- java.util.Arrays 快速使用介紹Java
- Java陣列宣告建立和使用以及多維陣列、Arrays類、稀疏陣列Java陣列
- Arrays
- Java踩坑記系列之Arrays.AsListJava
- java Arrays.copyOf實現淺複製Java
- Arrays.asList()使用異常:java.lang.UnsupportedOperationExceptionJavaException
- Arrays Basics
- 六,Arrays
- java原始碼分析 Arrays.asList()與Collections.unmodifiableList()Java原始碼
- Arrays+Collections
- 傳智黑馬java基礎學習——day17(包裝類、System、Math、Arrays、大資料運算)Java大資料
- Sorting arrays in NumPy by column
- 要想陣列用的 6,怎能不懂 java.util.Arrays陣列Java
- Arrays.copyOf 函式函式
- LeetCode | 349 Intersection Of Two ArraysLeetCode
- JAVA常用類--Cleaner類Java
- JAVA常用類--Runtime類Java
- Java常用類-Object類JavaObject
- Leetcode 4 Median of Two Sorted ArraysLeetCode
- List.of() VS Arrays.asList()
- Arrays.asList():使用指南
- CodeForces 1417B Two Arrays
- Arrays.asList存在的坑
- Arrays.asList()是個坑
- Java —— 列舉類(enum 類)Java
- Java —— 檔案類(File 類)Java