Java工具类Arrays常用方法之实战(arrays工具类的使用)


一维数组

  • 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]]



原文链接:,转发请注明来源!