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)

results matching ""

    No results matching ""