Arrays类概述
- 数组操作工具类,专门用于操作数组元素的。
public class ArraysDemo1 { public static void main(String[] args) { int[] arr = {11,22,45,67,89,77}; //1.返回数组内容的 toString(数组) System.out.println(Arrays.toString(arr)); //2.排序的API(默认自动对数组元素进行升序排序) Arrays.sort(arr); System.out.println(Arrays.toString(arr)); //3.二分搜索技术(前提数组必须排好序才支持,否则出bug) int index = Arrays.binarySearch(arr,67); System.out.println(index); //返回不存在元素的规律: - (应该插入的位置索引 + 1) int index2 = Arrays.binarySearch(arr,33); System.out.println(index2); //注意:数组如果没有排好序,可能会找不到存在的元素,从而出现bug! int[] arr2 = {12, 36, 34, 25, 13, 24, 234, 100}; System.out.println(Arrays.binarySearch(arr2,36)); } }
Arrays类的排序方法
代码演示如下:
public class ArrayDemo2 { public static void main(String[] args) { //目标:自定义数组的排序规则:Comparator比较器对象。 //1.Arrays的sort方法对于有值特性的数组是默认升序排序 int[] ages = {34,12,42,23}; Arrays.sort(ages); System.out.println(Arrays.toString(ages)); //2.需求:降序排序!(自定义比较其对象,只能支持引用类型的排序!) Integer[] ages1 = {34,12,42,23}; /** 参数一:被排序的数组 必须是引用类型的元素 参数二:匿名内部类对象,代表了一个比较其对象。 */ Arrays.sort(ages1, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { //return o1 - o2;//默认升序 return o2 - o1;//降序 } }); System.out.println(Arrays.toString(ages1)); } }
自定义排序规则
- 设置Comparator接口对应的比较器对象,来定制比较规则。
如果认为左边数据 大于 右边数据 返回正整数
如果认为左边数据 小于 右边数据 返回负整数
如果认为左边数据 等于 右边数据 返回0
代码演示如下:
学生类:
public class Student { 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; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getHeight() { return height; } public void setHeight(int height) { this.height = height; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + ", height=" + height + '}'; } }
测试类:
public class ArrayDemo2 { public static void main(String[] args) { Student[] students = new Student[3]; students[0] = new Student("老六",23,175.5); students[1] = new Student("张三",22,176.5); students[2] = new Student("王五",21,177.5); 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();//按照年龄升序排序! //注意:有小数的比较不能直接用这个compare return Double.compare(o1.getHeight() , o2.getHeight());//比较浮点型可以这样写 升序 } }); System.out.println(Arrays.toString(students)); } }