Java中Arrays类的常用API(比较器,sort,二分搜索)

代码实现:
package com.itheima.d7_arrays; import java.util.Arrays; /** * 目标:学会使用arrays类的常用api,并理解其原理 */ public class ArraysDemo1 { public static void main(String[] args) { int[] arr = {10, 2 , 55 , 23 , 24 ,100}; System.out.println(arr); //1、返回数组内容 toString(数组); // String rs = Arrays.toString(arr); // System.out.println(rs); System.out.println(Arrays.toString(arr)); //2、排序的API(默认自动对数组元素进行升序排序) Arrays.sort(arr); System.out.println(Arrays.toString(arr)); //API调用工程师 //3、二分搜索技术(前提:数组必须排好序才支持,否则出bug) int index = Arrays.binarySearch(arr,55); System.out.println(index); //返回不存在元素的规律: - (应该插入的位置 + 1) int index1 = Arrays.binarySearch(arr,555); System.out.println(index1); //注意:数组如果没有排好序,可能会找不到存在的元素,从而出现bug!! int[] arr1 = {12 , 36 ,29 ,98 , 54 , 79 ,62}; System.out.println(Arrays.binarySearch(arr1,29)); } }

1、Arrays的sort方法对于有值特性的数组是默认升序的。
2、需求:降序排序!(自定义比较器对象,只能支持引用类型的排序!!)。
package com.itheima.d7_arrays; import java.util.Arrays; import java.util.Comparator; public class ArrayDemo2 { public static void main(String[] args) { //目标:自定义数组的排序规则:Comparator比较器对象 //1、Arrays的sort方法对于有值特性的数组是默认升序的 int[] ages = {16 , 32 , 11 , 6 , 98}; Arrays.sort(ages); System.out.println(Arrays.toString(ages)); //2、需求:降序排序!(自定义比较器对象,只能支持引用类型的排序!!) Integer[] ages1 = {16 , 32 , 11 , 6 , 98}; /** * 参数一:被排序的数组,必须是引用类型的元素 * 参数二:匿名内部类对象,代表了一个比较器对象 */ Arrays.sort(ages1, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { // //制定比较规则 // if( o1 > o2){ // return 1; // }else if( o1 < o2){ // return -1; // } // return 0; // return o1 - o2; //默认升序 return o2 - o1; } }); System.out.println(Arrays.toString(ages1)); System.out.println("------------------------------"); Student[] students = new Student[3]; students[0] = new Student("王文军",18,185.3); students[1] = new Student("王文",14,195.2); students[2] = new Student("王军",22,165.7); 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 Double.compare(o1.getHeight(), o2.getHeight()); //比较浮点型可以这样写 升序 return Double.compare(o2.getHeight(), o1.getHeight());//比较浮点型可以这样写,降序 } }); System.out.println(Arrays.toString(students)); } }