一维数组
- equals:比较两个数组内容是否相等
- toString:数组转字符串
- sort:数组排序
- copyOf:拷贝指定长度的数组
- copyOfRange:拷贝指定范围的数组
- binarySearch:二分查找
equals
- 如果两个数组含相同顺序的相同元素,则它们是相等的
- 如果两个数组引用为null,则认为它们相等
int[] a1 = null;
int[] a2 = null;
System.out.println(Arrays.equals(a1, a2)); // log: true
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
boolean ret = Arrays.equals(arr1, arr2);
System.out.println(ret); // log: true
toString
- 普通转换
- 流式转换
// 普通
int[] nums = { 2, 6, 8, 4, 9, 0, 1 };
String s1 = Arrays.toString(nums);
System.out.println(s1); // log: [2, 6, 8, 4, 9, 0, 1]
// 流式转换
String s = Arrays.stream(nums)
.boxed()
.map(x -> String.valueOf(x))
.collect(Collectors.joining(" "))
.toString();
System.out.println(s); // log: 2 6 8 4 9 0 1
sort
- 默认排序
- 自定义排序(注意:使用包装类)
- 自定义Comparator实现类
- 内部类
- Lambda表达式
// 1. 默认排序,升序
int[] nums = { 2, 6, 8, 4, 9, 0, 1 };
Arrays.sort(nums);
// 2. 自定义Comparator实现类
class IntegerComparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
}
Integer[] nums = { 2, 6, 8, 4, 9, 0, 1 };
Arrays.sort(nums, new IntegerComparator());
// 3. 内部类
Integer[] nums = { 2, 6, 8, 4, 9, 0, 1 };
Arrays.sort(numss, new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
// 4. Lambda表达式
Integer[] nums = { 2, 6, 8, 4, 9, 0, 1 };
Arrays.sort(numss, (Integer o1, Integer o2) -> o1 - o2);
copyof
- 长度小于等于原数组
- 长度大于原数组,超出部分填充0
int[] nums = { 2, 6, 8, 4, 9, 0, 1 };
int[] nums1 = Arrays.copyOf(nums, 4);
System.out.println(Arrays.toString(nums1)); // log: [0, 1, 2, 4]
int[] nums2 = Arrays.copyOf(nums, 10);
System.out.println(Arrays.toString(nums2)); // log: [0, 1, 2, 4, 6, 8, 9, 0, 0, 0]
注意:
- 长度不能为负数
- 数组不能为null
copyOfRange(int[] original, int from, int to)
- 原数组范围内
- 超出原数组,超出部分填充0
int[] nums = { 2, 6, 8, 4, 9, 0, 1 };
int[] nums1 = Arrays.copyOfRange(nums, 2, 4);
System.out.println(Arrays.toString(nums1)); // log: [2, 4]
int[] nums2 = Arrays.copyOfRange(nums, 4, 12);
System.out.println(Arrays.toString(nums2)); // log: [6, 8, 9, 0, 0, 0, 0, 0]
注意:
- original不能为null
- from小于to
- 0<=from<= original.length
binarySearch
int[] nums = { 2, 6, 8, 4, 9, 0, 1 };
int i = Arrays.binarySearch(nums, 9);
System.out.println(i); // log: 4
多维数组
- deepEquals:比较内容是否相等
- deepToString:数组转字符串
deepEquals
Integer[][] data1 = { {1,2,3}, {4,5,6}, {7,8,9} };
Integer[][] data2 = { {1,2,3}, {4,5,6}, {7,8,9} };
boolean b = Arrays.deepEquals(data1, data2);
System.out.println(b); // log: true
deepToString
Integer[][] data = { {1,2,3}, {4,5,6}, {7,8,9} };
String s = Arrays.deepToString(datas1);
System.out.println(s); // log: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]