Arrays类

27 阅读2分钟

一、Arrays类概述:

数组操作工具类,专门用于操作数组元素的。

二、Arrays类的常用API

public static String toString(类型[] a) 对数组进行排序

public static void sort(类型[] a) 对数组进行默认升序排序

public static int binarySearch(int a, int key) 二分搜索数组数组中的数据,存在返回索引,不存在返回-1

示例代码如下 :

int[] arr = {10, 2, 55, 23, 24, 100};

//1、返回数组内容
System.out.println(Arrays.toString(arr));

//2、排序的API(默认自动对数组元素进行升序排序)
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));

//3、二分搜索技术(必须先排序好,否则会报错)
int index = Arrays.binarySearch(arr,55);
System.out.println(index);

int index2 = Arrays.binarySearch(arr,22);
System.out.println(index2);

对应的结果为:

image.png

public static<T>void sort(类型[] a,Comparator<?super T>c) 使用比较器对象自定义排序
自定义排序规则:
设置Comparator接口对应的比较器对象,来定制比较规则,如果左边数据大于右边数据,返回正整数,如果左边数据小于右边数据,返回负整数,如果认为左边数据等于右边数据,返回0。

当我们比较基本的数组类型时:

//降序排序
Integer[] arr = {34, 12, 42, 23};
//参数一:排序的数组必须是引用类型的元素
//参数二:匿名内部对象,代表了一个比较器对象
Arrays.sort(arr, new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        //指定比较规则
        //return o1 - o2;//默认升序
        return o2 - o1;//降序
    }
});
System.out.println(Arrays.toString(arr));

结果为:

image.png
当我们创建一个类时进行创建类的内容比较时:

首先创建一个学生类:

private String name;
private int age;
private double height;

public Student() {
}

public Student(String name, int age, double height) {
    this.name = name;
    this.age = age;
    this.height = height;
}

对学生类进行排序:

Student[] students = new Student[3];
students[0] =  new Student("a",23,181.2);
students[1] =  new Student("b",18,178.4);
students[2] =  new Student("c",20,191.6);
System.out.println(Arrays.toString(students));

//Arrays.sort(students);//运行会报错
Arrays.sort(students, new Comparator<Student>() {
    @Override
    public int compare(Student o1, Student o2) {
        //制定规则
        //return o1.getAge() - o2.getAge();//年龄升序排序
        //return o2.getAge() - o1.getAge();//年龄降序排序
        //return Double.compare(o1.getHeight(), o2.getHeight());//比较浮点类型可以这样写 此时为升序
        return Double.compare(o2.getHeight(), o1.getHeight());//比较浮点类型可以这样写 此时为降序
    }
});
System.out.println(Arrays.toString(students));

其结果为:

image.png