全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-08 7 分钟 ✍️ juanwangdev

Arrays

Arrays是Java标准库的数组工具类,提供数组的排序、查找、填充等功能。

概述

所在包

java.util.Arrays

核心特点

  • 静态方法,无需创建对象
  • 操作基本类型数组(int[]、char[]等)
  • 操作引用类型数组(Object[]、String[]等)

排序方法

sort排序

Java
// 基本类型数组排序
int[] arr = {5, 2, 8, 1, 9};
Arrays.sort(arr);
// [1, 2, 5, 8, 9]

// 指定范围排序
int[] arr = {5, 2, 8, 1, 9};
Arrays.sort(arr, 1, 4);  // 排序索引1到3
// [5, 1, 2, 8, 9]

// 引用类型数组排序
String[] strArr = {"c", "a", "b"};
Arrays.sort(strArr);
// ["a", "b", "c"]

// 自定义比较器
String[] strArr = {"c", "a", "b"};
Arrays.sort(strArr, Comparator.reverseOrder());
// ["c", "b", "a"]

查找方法

binarySearch二分查找

Java
int[] arr = {1, 3, 5, 7, 9};

// 必须先排序
int index = Arrays.binarySearch(arr, 5);
// 2(找到返回索引)

int index = Arrays.binarySearch(arr, 4);
// -2(找不到返回-(插入点)-1)

注意:binarySearch要求数组已排序,否则结果不确定。

填充与复制

fill填充

Java
int[] arr = new int[5];
Arrays.fill(arr, 10);
// [10, 10, 10, 10, 10]

// 指定范围填充
int[] arr = new int[5];
Arrays.fill(arr, 1, 4, 10);
// [0, 10, 10, 10, 0]

copyOf复制

Java
int[] arr = {1, 2, 3, 4, 5};

// 复制指定长度
int[] copy1 = Arrays.copyOf(arr, 3);
// [1, 2, 3]

int[] copy2 = Arrays.copyOf(arr, 10);
// [1, 2, 3, 4, 5, 0, 0, 0, 0, 0](超长补默认值)

// 指定范围复制
int[] copy3 = Arrays.copyOfRange(arr, 1, 4);
// [2, 3, 4](索引1到3)

转字符串

toString

Java
int[] arr = {1, 2, 3};
String str = Arrays.toString(arr);
// "[1, 2, 3]"

String[] strArr = {"a", "b", "c"};
String str = Arrays.toString(strArr);
// "[a, b, c]"

原生数组直接打印输出类似[I@hashcode,toString方法输出内容。

deepToString多维数组

Java
int[][] arr = {{1, 2}, {3, 4}};
String str = Arrays.deepToString(arr);
// "[[1, 2], [3, 4]]"

比较数组

equals比较内容

Java
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
int[] arr3 = {1, 2, 4};

Arrays.equals(arr1, arr2);  // true(内容相同)
Arrays.equals(arr1, arr3);  // false

// 直接用==比较引用,不是内容
arr1 == arr2;  // false(不同对象)

deepEquals多维数组比较

Java
int[][] arr1 = {{1, 2}, {3, 4}};
int[][] arr2 = {{1, 2}, {3, 4}};
Arrays.deepEquals(arr1, arr2);  // true

转集合

asList转List

Java
String[] arr = {"a", "b", "c"};
List<String> list = Arrays.asList(arr);
// [a, b, c]

// 直接传入元素
List<String> list = Arrays.asList("a", "b", "c");

重要:asList返回固定大小List,不能add/remove,否则抛UnsupportedOperationException。

Java
List<String> list = Arrays.asList("a", "b", "c");
list.add("d");  // UnsupportedOperationException

// 需要可变List
List<String> mutableList = new ArrayList<>(Arrays.asList("a", "b", "c"));
mutableList.add("d");  // 正常

流操作

stream转Stream(Java 8+)

Java
int[] arr = {1, 2, 3, 4, 5};

// 转IntStream
int sum = Arrays.stream(arr).sum();        // 15
int max = Arrays.stream(arr).max().getAsInt(); // 5

// 过滤
int[] filtered = Arrays.stream(arr)
    .filter(x -> x > 2)
    .toArray();
// [3, 4, 5]

并行排序

parallelSort并行排序

Java
int[] arr = {5, 2, 8, 1, 9, 3, 7, 4, 6};
Arrays.parallelSort(arr);  // 并行排序,大数据量更快
// [1, 2, 3, 4, 5, 6, 7, 8, 9]

parallelSort利用多线程并行排序,大数据量(上万)效率更高。

要点总结

  • Arrays是java.util包的数组工具类
  • sort排序,parallelSort并行排序
  • binarySearch二分查找(需先排序)
  • fill填充,copyOf/copyOfRange复制
  • toString转字符串,deepToString多维数组
  • equals比较内容,deepEquals多维比较
  • asList转List(固定大小不可变)
  • stream转Stream支持流操作
  • 大数组排序推荐parallelSort

📝 发现内容有误?点击此处直接编辑

← 上一篇 输入输出流
下一篇 → Collections
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库