Arrays数组 工具类
# Arrays数组 工具类
前言
java.util.Arrays
是一个提供操作数组的静态方法的工具类。无论是基本数据类型还是对象类型数组,Arrays
类都提供了大量的便捷方法。
# 1. 数组转换为字符串
public static String toString(int[] a)
:将指定数组转换为字符串并返回。这个方法可以轻松地将数组内容格式化输出,非常适合在调试时使用。
import java.util.Arrays;
public class ArrayToStringDemo {
public static void main(String[] args) {
// 创建一个整数数组
int[] intArray = {1, 2, 3, 4, 5};
// 将数组转换为字符串并输出
String arrayAsString = Arrays.toString(intArray);
System.out.println("数组内容为: " + arrayAsString); // 输出: 数组内容为: [1, 2, 3, 4, 5]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
实际开发场景:
- 调试与日志记录:在开发过程中,通常需要打印数组内容进行调试,通过
toString
方法可以方便地输出数组内容。
# 2. 数组排序 (sort)
public static void sort(int[] a)
:对指定数组进行升序排序。该方法采用双轴快速排序算法,具有良好的性能表现。
import java.util.Arrays;
public class ArraySortDemo {
public static void main(String[] args) {
// 创建一个整数数组
int[] intArray = {5, 2, 9, 1, 5};
// 对数组进行升序排序
Arrays.sort(intArray);
// 打印排序后的数组
System.out.println("排序后的数组: " + Arrays.toString(intArray)); // 输出: 排序后的数组: [1, 2, 5, 5, 9]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
实际开发场景:
- 数据处理与展示:在需要对数据进行排序并展示给用户时,如报表或排行榜。
# 3. 数组搜索 (binarySearch)
public static int binarySearch(int[] a, int key)
:在指定数组中查找指定元素并返回其索引。该方法要求数组已经经过排序,搜索采用二分查找算法,时间复杂度为 O(log n)。
import java.util.Arrays;
public class ArraySearchDemo {
public static void main(String[] args) {
// 创建一个已排序的整数数组
int[] intArray = {1, 2, 3, 4, 5};
// 查找元素 3 在数组中的索引
int key = 3;
int index = Arrays.binarySearch(intArray, key);
// 输出查找结果
System.out.println("元素 " + key + " 在数组中的索引: " + index); // 输出: 元素 3 在数组中的索引: 2
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
实际开发场景:
- 高效查询:在已排序的数据中高效查找元素,如搜索商品列表中的特定价格或名称。
# 4. 数组比较 (equals)
public static boolean equals(int[] a, int[] a2)
:比较两个数组是否相等。该方法逐个比较数组中的每个元素,仅当两个数组长度相同且所有元素相同时才返回true
。
import java.util.Arrays;
public class ArrayComparisonDemo {
public static void main(String[] args) {
// 创建两个数组
int[] array1 = {1, 2, 3};
int[] array2 = {1, 2, 3};
// 比较两个数组是否相等
boolean isEqual = Arrays.equals(array1, array2);
// 输出比较结果
System.out.println("两个数组是否相等: " + isEqual); // 输出: 两个数组是否相等: true
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
实际开发场景:
- 数据验证:在需要判断两个数据集(如用户输入和预期结果)是否一致时使用。
# 5. 数组填充 (fill)
public static void fill(int[] a, int val)
:使用指定值填充整个数组。public static void fill(int[] a, int fromIndex, int toIndex, int val)
:使用指定值填充数组的指定范围内的元素。
import java.util.Arrays;
public class ArrayFillDemo {
public static void main(String[] args) {
// 创建一个空的整数数组
int[] intArray = new int[5];
// 使用值 7 填充整个数组
Arrays.fill(intArray, 7);
System.out.println("使用值 7 填充后的数组: " + Arrays.toString(intArray)); // 输出: 使用值 7 填充后的数组: [7, 7, 7, 7, 7]
// 创建一个新数组并部分填充
int[] subArray = {1, 2, 3, 4, 5};
Arrays.fill(subArray, 1, 4, 0); // 将索引 1 到 3 的元素填充为 0
System.out.println("部分填充后的数组: " + Arrays.toString(subArray)); // 输出: 部分填充后的数组: [1, 0, 0, 0, 5]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
实际开发场景:
- 初始化数据:在初始化数组时,使用统一的默认值进行填充,如表单数据的初始值。
# 6. 数组复制 (copyOf)
public static int[] copyOf(int[] original, int newLength)
:复制指定数组的指定长度。public static int[] copyOfRange(int[] original, int from, int to)
:复制指定数组的指定范围内的元素。
import java.util.Arrays;
public class ArrayCopyDemo {
public static void main(String[] args) {
// 创建一个源数组
int[] sourceArray = {1, 2, 3, 4, 5};
// 复制前 3 个元素
int[] copyArray = Arrays.copyOf(sourceArray, 3);
System.out.println("复制前 3 个元素: " + Arrays.toString(copyArray)); // 输出: 复制前 3 个元素: [1, 2, 3]
// 复制索引 1 到 3 的元素
int[] rangeArray = Arrays.copyOfRange(sourceArray, 1, 4);
System.out.println("复制索引 1 到 3 的元素: " + Arrays.toString(rangeArray)); // 输出: 复制索引 1 到 3 的元素: [2, 3, 4]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
实际开发场景:
- 数组扩展与截取:在需要扩展数组大小或截取部分数组数据时,
copyOf
和copyOfRange
是非常便捷的方法。
# 7. 数组转换为集合 (asList)
public static <T> List<T> asList(T... a)
:将指定数组转换为List
集合。转换后的集合是一个固定大小的列表,无法添加或删除元素。
import java.util.Arrays;
import java.util.List;
public class ArrayToListDemo {
public static void main(String[] args) {
// 创建一个字符串数组
String[] stringArray = {"苹果", "香蕉", "樱桃"};
// 将数组转换为 List 集合
List<String> stringList = Arrays.asList(stringArray);
System.out.println("转换后的集合: " + stringList); // 输出: 转换后的集合: [苹果, 香蕉, 樱桃]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
实际开发场景:
- 集合与数组的转换:在需要对数组进行集合操作(如查找、排序等)时,先转换为
List
是一种常见做法。
# 8. 数组内容校验与填充
public static boolean hasDefaultValues(int[] array, int defaultValue)
:检查数组中的元素是否全部等于某个默认值。
import java.util.Arrays;
public class ArrayValidationDemo {
public static void main(String[] args) {
// 初始化数组
int[] arrayWithDefaults = new int[5];
Arrays.fill(arrayWithDefaults, 0);
// 校验数组是否全部是默认值
boolean isAllDefaults = hasDefaultValues(arrayWithDefaults, 0);
System.out.println("数组是否全部为默认值: " + isAllDefaults); // 输出: 数组是否全部为默认值: true
}
public static boolean hasDefaultValues(int[] array, int defaultValue) {
for (int value : array) {
if (value != defaultValue) {
return false;
}
}
return true;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
实际开发场景:
- 数据初始化校验:在系统启动或模块初始化时,常需要检查数据是否被正确初始化为默认值。
编辑此页 (opens new window)
上次更新: 2025/02/03, 00:09:13