在Java编程中,数组是一种基本的数据结构,用于存储固定大小的同类型元素,数组一旦创建,其长度便不可改变,这有时会给数据处理带来不便,所谓“整形数组”,通常指数组元素的类型为基本数据类型int,或者需要对数组进行重新组织(如排序、去重、填充等操作),本文将详细介绍如何在Java中对int数组进行各种“整形”操作,包括初始化、排序、去重、填充以及动态扩容等常见场景。

数组的初始化与基本操作
在Java中,int数组的初始化有多种方式,静态初始化时,可以直接在声明时指定数组元素,int[] arr = {1, 3, 2, 5, 4};,动态初始化则需要先指定数组长度,再为每个元素赋值,int[] arr = new int[5]; arr[0] = 1;,数组的长度通过length属性获取,如arr.length,访问数组元素时,需注意索引范围(0到length-1),避免越界异常。
数组排序:Arrays.sort()方法
排序是最常见的数组整形操作之一,Java提供了java.util.Arrays工具类,其中的sort()方法可以对int数组进行升序排序,该方法采用双轴快速排序算法(TimSort),时间复杂度为O(n log n),适用于大多数场景,示例代码如下:
import java.util.Arrays;
int[] arr = {5, 2, 9, 1, 5};
Arrays.sort(arr); // 排序后arr为[1, 2, 5, 5, 9]
若需降序排序,可先升序排序后再反转数组,或使用Integer数组配合Comparator实现。
数组去重:保留唯一元素
去重是处理重复数据时的关键步骤,对于无序数组,可通过HashSet去重,步骤如下:

- 将数组转换为List(如
Arrays.asList())。 - 使用HashSet的构造函数自动去重。
- 将结果转回数组,示例:
Integer[] temp = Arrays.stream(arr).boxed().toArray(Integer[]::new); Set<Integer> uniqueSet = new LinkedHashSet<>(Arrays.asList(temp)); int[] uniqueArr = uniqueSet.stream().mapToInt(Integer::intValue).toArray();
若需保持原数组顺序,推荐使用
LinkedHashSet;若无需保留顺序,普通HashSet即可。
数组填充:Arrays.fill()方法
当需要将数组所有元素或部分元素设置为特定值时,可使用Arrays.fill()方法,该方法支持填充整个数组或指定范围(起始索引和结束索引)。
int[] arr = new int[5]; Arrays.fill(arr, 10); // 所有元素设为10,结果为[10, 10, 10, 10, 10] Arrays.fill(arr, 1, 3, 20); // 索引1到2设为20,结果为[10, 20, 20, 10, 10]
注意:填充范围是左闭右开区间,即包含起始索引,不包含结束索引。
动态扩容:数组长度的“弹性”处理
Java数组长度固定,若需动态调整大小,需手动创建新数组并复制元素,步骤如下:

- 创建一个更大(或更小)的新数组。
- 使用
System.arraycopy()或Arrays.copyOf()将原数组元素复制到新数组,示例:int[] oldArr = {1, 2, 3}; int[] newArr = new int[oldArr.length * 2]; // 扩容为原长度2倍 System.arraycopy(oldArr, 0, newArr, 0, oldArr.length); // 复制原数组 // 或使用Arrays.copyOf(oldArr, newLength)Arrays.copyOf()会返回一个新数组,若新长度大于原数组,多余位置填充默认值(int类型为0)。
其他常用操作:查找、替换与遍历
- 查找元素:使用
Arrays.binarySearch()可在已排序数组中二分查找元素,返回索引;未找到则返回负数,注意:未排序数组使用该方法会导致错误结果。 - 替换元素:可通过遍历数组,使用条件判断替换特定值,
for (int i = 0; i < arr.length; i++) { if (arr[i] == 5) arr[i] = 0; // 将所有5替换为0 } - 遍历数组:增强for循环(
for (int num : arr))或传统for循环均可,前者更简洁,后者可获取索引。
Java中对int数组的“整形”操作涵盖了初始化、排序、去重、填充、扩容等多个方面,熟练运用Arrays工具类和集合框架(如HashSet、ArrayList),可以高效解决数组处理中的常见问题,实际开发中,需根据具体场景选择合适的方法:对性能要求高的排序场景优先使用Arrays.sort(),而去重时则需考虑是否保留顺序,掌握这些操作,能显著提升代码的简洁性和执行效率。



















