首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 數組操作十大高頻場景:Apache Commons Lang 實戰速查表

     編輯:Java 相關知識

為什麼推薦 Apache Commons Lang?

JDK 原生數組 API 極其匱乏:無刪除、無反轉、無填充、無安全拷貝。ArrayUtils 提供 50+ 實用方法,已成為 Java 開發標準庫。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.14.0</version>
</dependency>

十大高頻操作實戰

1. 空值安全檢查

ArrayUtils.isEmpty(arr)      // null 或 length=0 返回 true
ArrayUtils.isNotEmpty(arr)   // 相反

2. 數組拷貝(高性能、自動處理長度)

int[] src = {1,2,3,4,5};
int[] dest = ArrayUtils.subarray(src, 1, 4); // [2,3,4] 索引 1 到 3
int[] copy = ArrayUtils.clone(src);          // 深拷貝

3. 添加元素(返回新數組,原數組不變)

int[] arr = {1,2,3};
arr = ArrayUtils.add(arr, 4);        // 尾部添加 -> [1,2,3,4]
arr = ArrayUtils.add(arr, 1, 99);    // 索引 1 插入 -> [1,99,2,3]
arr = ArrayUtils.addAll(arr, new int[]{5,6}); // 批量添加

4. 刪除元素

int[] arr = {1,2,3,4,5};
arr = ArrayUtils.remove(arr, 2);           // 刪除索引 2 -> [1,2,4,5]
arr = ArrayUtils.removeElement(arr, 3);    // 刪除首個值為 3 的元素 -> [1,2,4,5]
arr = ArrayUtils.removeElements(arr, 1, 4); // 刪除所有 1 和 4 -> [2,5]

5. 反轉數組(原地修改)

int[] arr = {1,2,3,4,5};
ArrayUtils.reverse(arr); // arr 變為 [5,4,3,2,1]

6. 查找索引

int[] arr = {1,2,3,2,1};
ArrayUtils.indexOf(arr, 2);    // 1 (首次出現)
ArrayUtils.lastIndexOf(arr, 2); // 3 (最後出現)
ArrayUtils.contains(arr, 3);   // true

7. 類型轉換:基本類型 ↔ 包裝類型

int[] primitives = {1,2,3};
Integer[] objects = ArrayUtils.toObject(primitives);     // 裝箱
int[] back = ArrayUtils.toPrimitive(objects);            // 拆箱
// 自動處理 null:toPrimitive 默認 null→0,可指定默認值

8. 數組填充

int[] arr = new int[5];
ArrayUtils.fill(arr, 7); // [7,7,7,7,7]

9. 子數組提取

int[] arr = {1,2,3,4,5,6};
int[] sub = ArrayUtils.subarray(arr, 2, 5); // [3,4,5] 索引 2 到 4

10. int 轉 byte[](網絡傳輸/存儲必備)

// 高性能:ByteBuffer(大端序,網絡字節序)
byte[] bytes = ByteBuffer.allocate(4).putInt(8).array(); 
// [0, 0, 0, 8]

// 手動位運算(無依賴)
byte[] manual = {
    (byte)(val >> 24),
    (byte)(val >> 16),
    (byte)(val >> 8),
    (byte)val
};

性能與最佳實踐

操作 時間複雜度 備註
add/remove O(n) 創建新數組拷貝,頻繁操作改用 ArrayList
reverse O(n) 原地交換,空間 O(1)
indexOf/contains O(n) 線性查找,大數據量考慮排序後二分或 Set
toObject/toPrimitive O(n) 大量裝箱拆箱影響 GC,熱點路徑避免

避坑指南

  • 所有修改操作返回新數組:必須重新賦值 arr = ArrayUtils.add(arr, x)
  • 基本類型數組無法直接用 Collections:Arrays.asList(int[]) 返回 List 而非 List
  • null 安全:大多數方法支持 null 輸入視為空數組
  • 並發環境:數組非線程安全,需自行同步或用 CopyOnWriteArrayList

收藏這張速查表,告別手寫數組工具類,專注業務邏輯開發。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved