062_Arrays类与数组操作
一、Arrays类概述
java.util.Arrays是Java中专门用于数组操作的工具类,提供了一系列静态方法来简化数组的创建、填充、复制、比较、转换等操作。其核心作用包括:
- 封装数组的常用操作,减少重复代码。
- 提供高效的数组处理实现(部分方法采用系统级优化)。
- 支持基本类型数组和对象数组的统一操作。
Arrays类的方法大多针对数组的共性需求设计,无需关注数组的具体类型(基本类型或引用类型),是数组操作的核心工具类。
二、数组的创建与填充
2.1 填充数组:fill()
fill()方法用于将数组的所有元素或指定范围的元素设置为同一个值,适用于数组初始化。
2.1.1 填充全部元素
// 语法:填充整个数组为指定值
static void fill(类型[] array, 类型 value)// 示例:填充int数组
int[] nums = new int[5];
Arrays.fill(nums, 10); // 数组变为 [10, 10, 10, 10, 10]// 示例:填充String数组
String[] strs = new String[3];
Arrays.fill(strs, "default"); // 数组变为 ["default", "default", "default"]
2.1.2 填充指定范围元素
// 语法:填充数组[fromIndex, toIndex)范围为指定值(左闭右开)
static void fill(类型[] array, int fromIndex, int toIndex, 类型 value)// 示例:填充部分范围
int[] nums = new int[5];
Arrays.fill(nums, 1, 4, 20); // 填充索引1-3(不含4),数组变为 [0, 20, 20, 20, 0]
注意:fromIndex和toIndex需满足0 ≤ fromIndex ≤ toIndex ≤ array.length,否则抛出IndexOutOfBoundsException。
2.2 生成数组:setAll()与parallelSetAll()
这两个方法通过生成器函数(根据索引计算元素值)填充数组,适用于动态生成数组元素。
- setAll():单线程填充数组。
- parallelSetAll():多线程并行填充数组(适合大数据量数组)。
// 语法
static void setAll(类型[] array, IntUnaryOperator generator)
static void parallelSetAll(类型[] array, IntUnaryOperator generator)// 示例:生成1-10的平方数数组
int[] squares = new int[10];
Arrays.setAll(squares, i -> (i + 1) * (i + 1));
// 数组变为 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]// 示例:并行生成大数据量数组
long[] bigArray =