1. 复制数组
System.arraycopy() 方法
参数说明:
- 源数组:要复制的原始数组
- 源数组起始偏移量:从源数组哪个索引开始复制
- 目标数组起始偏移量:从目标数组哪个索引开始粘贴
- 复制元素个数:需要复制的元素数量
重要提示:此方法不会执行自动装箱和拆箱,两个数组必须是明确的相同类型。
示例代码
class CopyingArrays {
public static void main(String[] args) {
int[] arr1 = new int[5];
int[] arr2 = new int[8];
Arrays.fill(arr1, 11); // 填充数组1
Arrays.fill(arr2, 22); // 填充数组2
System.out.println("arr1 = " + Arrays.toString(arr1));
System.out.println("arr2 = " + Arrays.toString(arr2));
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
System.out.println("arr2 = " + Arrays.toString(arr2));
int[] arr3 = new int[3];
System.out.println("arr3 = " + Arrays.toString(arr3));
System.arraycopy(arr2, 0, arr3, 0, arr3.length);
System.out.println("arr3 = " + Arrays.toString(arr3));
}
}
输出结果:
arr1 = [11, 11, 11, 11, 11]
arr2 = [22, 22, 22, 22, 22, 22, 22, 22]
arr2 = [11, 11, 11, 11, 11, 22, 22, 22]
arr3 = [0, 0, 0]
arr3 = [11, 11, 11]
2. 数组的比较
Arrays.equals() 方法
数组相等条件:
- 元素个数必须相等
- 对应位置的元素必须相等
3. 数组排序
Arrays.sort() 方法
两种排序方式:
-
实现
Comparable接口:Arrays.sort(arr1); // 对象需实现Comparable接口 -
使用自定义
Comparator比较器:Arrays.sort(arr1, 比较器); // 提供自定义比较逻辑
完整示例
class CompType implements Comparable<CompType> {
private int title;
private int name;
// 构造函数、getter、setter 省略...
@Override
public String toString() {
return "CompType{" +
"title=" + title +
", name=" + name +
'}';
}
@Override
public int compareTo(CompType o) {
return Integer.compare(o.title, title); // DESC降序
}
public static void main(String[] args) {
CompType[] compTypes = {
new CompType(2, 4),
new CompType(1, 29),
new CompType(4, 2),
new CompType(48, 1)
};
System.out.println("Before sort:" + Arrays.toString(compTypes));
Arrays.sort(compTypes); // 实现Comparable接口
System.out.println("After Comparable sort:" + Arrays.toString(compTypes));
Arrays.sort(compTypes, Comparator.comparingInt(o -> o.name)); // ASC升序,按name
System.out.println("After Comparator sort:" + Arrays.toString(compTypes));
System.out.println("binarySearch:" + Arrays.binarySearch(compTypes,
new CompType(2, 4), Comparator.comparingInt(o -> o.name)));
}
}
输出结果:
Before sort:[CompType{title=2, name=4}, CompType{title=1, name=29}, CompType{title=4, name=2}, CompType{title=48, name=1}]
After sort:[CompType{title=48, name=1}, CompType{title=4, name=2}, CompType{title=2, name=4}, CompType{title=1, name=29}]
After Comparator sort:[CompType{title=48, name=1}, CompType{title=4, name=2}, CompType{title=2, name=4}, CompType{title=1, name=29}]
binarySearch:2
4. 在已排序的数组中查找
Arrays.binarySearch() 方法
重要前提:数组必须已经排好序,否则结果不可预测。
使用场景:
- 在已排序数组中快速查找元素
- 支持自定义
Comparator进行查找 - 时间复杂度为 O(log n)