Java 基础--Arrays工具类详解
简介
Java Arrays 工具类提供了一些用来操作数组的静态方法,这些方法包括如下:
- 排序和搜索
- sort()
- binarySearch()
- 数组拷贝
- copyOf()
- copyOfRange()
- 数组填充
- fill()
- 数组比较
- equals()
- 转换为列表
- asList()
下面将对这些方法进行详细说明。
排序和搜索
sort()
Java Arrays 工具类提供的 sort() 方法用于对指定数组进行排序。默认情况下,该方法按升序排列数组元素。sort() 方法使用的是快速排序(Quicksort)算法实现的。
sort() 方法有两种重载形式。第一种形式是对整个数组进行排序,第二种形式是指定排序范围:
public static void sort(int[] arr) // 对整个 int 数组按升序排序
public static void sort(int[] arr, int fromIndex, int toIndex) // 从 fromIndex 开始到 toIndex-1 ,对 int 数组进行排序
示例代码:
int[] arr = {22, 18, 1, 37, 99};
Arrays.sort(arr); // 对整个数组进行排序
System.out.println(Arrays.toString(arr)); // 输出排序后的数组
// 输出: [1, 18, 22, 37, 99]
binarySearch()
Java Arrays 工具类提供的 binarySearch() 方法用于对已排序的数组执行二分查找(Binary Search)。如果数组未排序,则参数“行为是未定义的”(Undefined)。
binarySearch() 方法有三种重载形式。第一种形式只要求数组和要查找的值,第二种形式还要求起始和结束索引,第三种形式还要求一个比较器。
public static int binarySearch(int[] arr, int key) // 需要查找的元素 key ,在 int 数组 arr 中找到的索引位置
public static int binarySearch(int[] arr, int fromIndex, int toIndex, int key) // 需要查找的元素 key ,在 int 数组 arr 中从索引 fromIndex 开始到索引 toIndex-1 的范围内找到的索引位置
public static int binarySearch(int[] arr, int key, Comparator<int> comparator) // 需要查找的元素 key ,在 int 数组 arr 中找到的索引位置,使用比较器进行比较
示例代码:
int[] arr = {1, 18, 22, 37, 99};
int index = Arrays.binarySearch(arr, 22); // 二分查找 22 在数组中的索引
System.out.println(index); // 输出: 2
数组拷贝
copyOf()
Java Arrays 工具类提供的 copyOf() 方法用于对原始数组进行复制,返回一个新的数组。新数组长度为指定长度,多余的元素由 0 填充。如果源数组长度小于指定的长度,则在新数组的末尾填充 0。
copyOf() 方法有两种重载形式。第一种形式是对整个原始数组进行复制,第二种形式是复制指定范围的原始数组:
public static char[] copyOf(char[] original, int newLength) // 复制整个 char 数组
public static char[] copyOfRange(char[] original, int from, int to) // 复制 char 数组的一部分
示例代码:
char[] original = {'a', 'b', 'c', 'd', 'e'};
char[] copy = Arrays.copyOf(original, 10); // 复制 char 数组 original,并将其长度增加至 10
System.out.println(Arrays.toString(copy)); // 输出:[a, b, c, d, e, , , , , ]
char[] copy2 = Arrays.copyOfRange(original, 1, 4); // 复制 char 数组 original 的索引 1 到 3 的元素
System.out.println(Arrays.toString(copy2)); // 输出:[b, c, d]
copyOfRange()
copyOfRange() 方法与 copyOf() 方法类似,也是用于对原始数组进行复制,并返回一个新的数组。但 copyOfRange() 方法的作用是复制指定范围内的值。
public static <T> T[] copyOfRange(T[] original, int from, int to, Class<? extends T[]> newType) // 复制一个对象数组的一部分
public static int[] copyOfRange(int[] original, int from, int to) // 复制 int 数组的一部分
示例代码:
int[] original = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] copy = Arrays.copyOfRange(original, 0, 5); // 复制原始数组的前 5 个元素
System.out.println(Arrays.toString(copy)); // 输出:[1, 2, 3, 4, 5]
数组填充
Java Arrays 工具类提供的 fill() 方法用于将指定值填充到数组中的每个元素上。
fill() 方法有两种重载形式。第一种形式是将整个数组填充为指定值,第二种形式是将指定范围内的数组元素填充指定值:
public static void fill(long[] a, long val) // 将整个 long 数组填充为指定值
public static void fill(int[] a, int fromIndex, int toIndex, int val) // 将 int 数组的一部分填充为指定值
示例代码:
int[] arr = new int[5];
Arrays.fill(arr, 1); // 将 int 数组每个元素填充为 1
System.out.println(Arrays.toString(arr)); // 输出: [1, 1, 1, 1, 1]
Arrays.fill(arr, 1, 4, 0); // 将 int 数组索引 1 到 3 的元素填充为 0
System.out.println(Arrays.toString(arr)); // 输出: [1, 0, 0, 0, 1]
数组比较
Java Arrays 工具类提供的 equals() 方法用于比较两个数组是否相等。
equals() 方法有两种重载形式。第一种形式直接比较两个相同类型的值数组,第二种形式还可以指定比较范围。
public static boolean equals(int[] a, int[] a2) // 比较两个 int 数组是否相等
public static boolean equals(Object[] a, Object[] a2) // 比较两个 Object 数组是否相等
public static boolean equals(int[] a, int[] a2, int length); // 比较两个 int 数组从索引 0 开始,到指定长度的元素是否相等
示例代码:
int[] arr1 = {1, 2, 3, 4};
int[] arr2 = {1, 2, 3, 4};
boolean isEqual = Arrays.equals(arr1, arr2); // 判断两个数组是否相等
System.out.println(isEqual); // 输出:true
int[] arr3 = {1, 2, 3, 4, 5};
boolean isEqual2 = Arrays.equals(arr1, arr3, arr1.length); // 判断两个数组从 0 开始,到指定长度是否相等
System.out.println(isEqual2); // 输出:true
转换为列表
Java Arrays 工具类提供的 asList() 方法能够将数组转换为列表。需要注意的是,asList() 方法返回的列表不能修改,否则会抛出异常。
public static <T> List<T> asList(T... a) // 将对象数组转换为定长列表
示例代码:
Integer[] arr = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(arr); // 将 Integer 数组转换为列表
System.out.println(list); // 输出:[1, 2, 3, 4, 5]
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 基础–Arrays工具类详解 - Python技术站