Arrays类

Arrays类

  • 这个类其实我们实际使用并不多,但是lambda中流处理其实使用的就是Arrays类
  • 这是一个操作数组的工具类

常用简单方法

  • toString:可以将数组转换为字符串
  • copyOfRange:复制和数组截断
  • copyOf:一半用于数组扩容
int[] arr = {10,11,20,30,89};

// Arrays 类的静态方法 toString() 可以将数组转换为字符串
System.out.println(Arrays.toString(arr));

// 复制指定位置的数据到新的数组,Java的区间范围都是左闭右开区间
int[] arr1 = Arrays.copyOfRange(arr, 1, 3);
System.out.println(Arrays.toString(arr1));

// 复制整个数组(这个方法一半用作数组扩容,因为数组的长度是固定的,不能直接添加元素,只能通过复制一个新的数组来实现扩容)
// 一半来说,新数组的长度会比原数组大,不然就会截断数组
int[] arr2 = Arrays.copyOf(arr, arr.length * 2) ;
System.out.println(Arrays.toString(arr2));


setAll

  • 这个方法是对数组中的值遍历并处理(有点流式处理的意思了)
  • 参数1:数组
  • 参数2:匿名内部类,实现了函数式接口IntToDoubleFunction
// setAll() 方法可以用来设置数组的值
double[] arr3 = {10.1, 11.2, 20.3, 30.4, 89.5};
// setAll() 方法的第一个参数是要设置的数组,第二个参数是一个函数式接口,是对数组中数据的处理
// 这个地方就已经具备lambda流式处理的雏形了
// 第二个参数其实实现了IntToDoubleFunction接口的applyAsDouble方法
Arrays.setAll(arr3, i -> arr3[i] * 2);
System.out.println(Arrays.toString(arr3));

sort

如果不是引用类型,可以直接使用

// 排序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));

如果是引用类型,需要传递两个参数

  • 参数1:要排序的数组
  • 参数2:比较器,实现了Comparator接口
    在这里插入图片描述
Student[] students = {
    new Student("张三", 29),
    new Student("李四", 21),
    new Student("王五", 22),
    new Student("赵六", 23),
    new Student("孙七", 24)
};
// 对自定义对象数组进行排序,需要传入一个比较器
Arrays.sort(students, (o1, o2) -> o1.getAge() - o2.getAge());
// 这种写法也是可以的
Arrays.sort(students, Comparator.comparingInt(Student::getAge));
System.out.println(Arrays.toString(students));

有两种方式实现比较:
在这里插入图片描述

  • 方式一:是在实体类上实现了Comparable接口,重写了compareTo方法,以后所有的比较都按照这个compare方法来
  • 方式二:每次都传入一个新的比较器,这样会麻烦一些,但是可以实现基于多种规则排序的需求

另外一种实现方式

public class Student implements Comparable<Student> {
    private String name;
    private int age;

    此处省略一万行代码

    @Override
    public int compareTo(Student o) {
        return this.age - o.age;
    }
}
// 如果是自定义对象,可以实现Comparable接口,然后重写compareTo方法
Arrays.sort(students);
System.out.println(Arrays.toString(students));

相关推荐

  1. <span style='color:red;'>Arrays</span><span style='color:red;'>类</span>

    Arrays

    2024-04-09 17:16:05      35 阅读
  2. <span style='color:red;'>Arrays</span><span style='color:red;'>类</span>

    Arrays

    2024-04-09 17:16:05      34 阅读
  3. C#——Array详情

    2024-04-09 17:16:05       33 阅读
  4. Arrays

    2024-04-09 17:16:05       32 阅读
  5. Arrays

    2024-04-09 17:16:05       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-09 17:16:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-09 17:16:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-09 17:16:05       82 阅读
  4. Python语言-面向对象

    2024-04-09 17:16:05       91 阅读

热门阅读

  1. 系统设计之订单系统中如何防止商品超卖

    2024-04-09 17:16:05       38 阅读
  2. Vue Router的介绍与引入

    2024-04-09 17:16:05       33 阅读
  3. 自动化测试岗面试问题整理

    2024-04-09 17:16:05       28 阅读
  4. 基于单片机的机械手臂控制系统设计

    2024-04-09 17:16:05       28 阅读
  5. 逻辑回归(Logistic Regression)详解

    2024-04-09 17:16:05       29 阅读
  6. 蓝桥杯刷题 深度优先搜索-[178]全球变暖(C++)

    2024-04-09 17:16:05       31 阅读
  7. 声明结构体变量时,是否一定要加struct关键字?

    2024-04-09 17:16:05       31 阅读