Array特殊操作
org.apache.commons.lang3.ArrayUtils / java.util.Arrays 已提供大部分常見的陣列操作功能,UDE只做部分補充。以下先列舉常見的工具函式功能供參考。
ArrayUtils | 說明 |
---|---|
toString | 將一個陣列轉換成String,用於輸出 也常用 java.util.Arrays.toString() |
isEquals | 判斷兩個陣列是否相等,採用EqualsBuilder進行判斷 |
toMap | 將一個陣列轉換成Map,如果陣列裡是Entry則其Key與Value就是新Map的Key和Value;如果是Object[]則Object[0]為KeyObject[1]為Value |
clone | 拷貝陣列 |
subarray | 擷取子陣列 |
isSameLength | 判斷兩個陣列長度是否相等 |
getLength | 獲得陣列的長度 |
isSameType | 判段兩個陣列的類型是否相同 |
reverse | 陣列反轉 |
indexOf | 查詢某個Object在陣列中的位置,可以指定起始搜索位置 |
lastIndexOf | 反向查詢某個Object在陣列中的位置,可以指定起始搜索位置 |
contains | 查詢某個Object是否在陣列中 |
toObject | 將 primitive 類型陣列轉換成 Boxed 陣列 |
isEmpty | 判斷陣列是否為空(null和length=0的時候都為空) |
addAll | 合併兩個陣列 |
Add | 添加一個數據到陣列 |
Remove | 刪除陣列中某個位置上的數據 |
removeElement | 刪除陣列中某個對象(從頭開始搜索,刪除第一個) |
UdeArrayUtils
查找、取值
配合其它演算法需求,查找子陣列在陣列中的位置。
// indexOf (int[], int[]) // indexOf (int[], int[], final int startPos) // lastIndexOf(int[], int[]) // lastIndexOf(int[], int[], final int lastStartPos) int[] A = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int[] B = { 1, 2 }; int[] C = { 2, 3 }; assertEquals(1, UdeArrayUtils.indexOf(A, B)); assertEquals(12, UdeArrayUtils.indexOf(A, C, 5));
取得指定位置的元素,並提供容錯處理,超出陣列範圍時回傳NULL。 替代 array[index],通常會跟 varargs 配合使用。
T get(final T[] array, final int index) T getFirst(T[]) T getLast(T[])
取得指定位置的元素,並提供容錯處理,超出陣列範圍時回傳 defaultValue。 替代 array[index],通常會跟 varargs 配合使用。
int getInt(int[] array, int index, int defaultValue) float getFloat(float[] array, int index, float defaultValue)
建立 ARRAY
當遇到函式的參數是 (int[], int[]) 時,可以使用 varargs 風格呼叫。
float[] floats(float... values)
int[] ints(int... values)
T[] objects(T... values)
計算總合
float sum(float... values)
int sum(int... values) // 合計值超出整數範圍時,丟出 ArithmeticException
LAMBDA
避免原始 ARRAY 為 NULL 的問題。
void forEach(int[] array, IntConsumer consumer)
void forEach(T[] array, Consumer<T> consumer)