整理自 StackOverflow 高票回答,涵蓋日常開發 90% 以上陣列操作場景。代碼均經 JDK 17 驗證。
String[] a = new String[5];
String[] b = {"a","b","c","d","e"};
String[] c = new String[]{"a","b","c","d","e"}; // 匿名陣列
int[] nums = {1,2,3,4,5};
System.out.println(Arrays.toString(nums)); // [1, 2, 3, 4, 5]
// 直接印 nums 會輸出 [I@7150bd4d (地址)
String[] arr = {"a","b","c"};
List list = new ArrayList<>(Arrays.asList(arr));
// 注意:Arrays.asList 返回固定大小列表,不可 add/remove
boolean contains = Arrays.asList(arr).contains("a"); // true
// 原始類型需用循環或 Stream: IntStream.of(intArr).anyMatch(x -> x == 3)
// Apache Commons Lang
int[] combined = ArrayUtils.addAll(arr1, arr2);
// 純 JDK (Java 8+)
int[] combined = IntStream.concat(Arrays.stream(arr1), Arrays.stream(arr2)).toArray();
method(new String[]{"a","b","c"}); // 無需預先定義變數
// Apache Commons Lang
String joined = StringUtils.join(new String[]{"a","b","c"}, ", "); // a, b, c
// JDK 8+ StringJoiner / String.join
String joined = String.join(", ", "a", "b", "c");
List list = Arrays.asList("a","b","c");
String[] arr = list.toArray(new String[0]); // 推薦 new Type[0] 讓 JVM 優化
Set set = new HashSet<>(Arrays.asList(arr));
// 順序不保證,需有序用 LinkedHashSet
// Apache Commons Lang
ArrayUtils.reverse(intArr);
// 手動雙指針
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;
}
// Apache Commons Lang
int[] removed = ArrayUtils.removeElement(arr, 3); // 移除值為 3 的元素
// 手動:Stream 過濾
int[] removed = Arrays.stream(arr).filter(x -> x != 3).toArray();
byte[] bytes = ByteBuffer.allocate(4).putInt(8).array();
// 大端序:0x00 0x00 0x00 0x08
// 小端序用 ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(8).array()
Arrays.parallelSort(largeArr) 利用 ForkJoinPool,大陣列更快Arrays.equals(arr1, arr2) / Arrays.deepEquals(多維)Arrays.fill(arr, val) / Arrays.setAll(arr, i -> i*2)Arrays.stream(arr).filter(...).map(...).toArray()熟練掌握 Arrays、ArrayUtils、Stream API 三套工具鏈,能以最少代碼解決陣列 99% 操作需求。生產環境優先用標準庫,避免手寫循環引入 Bug。