一、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);
对应的结果为:
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));
结果为:
当我们创建一个类时进行创建类的内容比较时:
首先创建一个学生类:
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));
其结果为: