Arrays类的常规使用

package com.key.d14_packeg_02.Arrays;import java.util.Arrays;public class array {public static void main(String[] args) {int[] arr = {1,242,51,68,3,113,93};System.out.println(arr);/*** 1、打印数组内容*/String array = Arrays.toString(arr);System.out.println(array);/*** 2、对数组进行排序(升序排列)*/Arrays.sort(arr);System.out.println(Arrays.toString(arr));/*** 3、二分搜索(前提是数组必须排好序)* --如果找到,就返回索引值* --如果没找到就返回 -(应该插入位置的所以+1)*/System.out.println(Arrays.binarySearch(arr, 113));}}

Arrays对于Comparator比较器的支持

package com.key.d14_packeg_02.Arrays;import java.util.Arrays;import java.util.Comparator;public class ArraysDemo {public static void main(String[] args) {/*** 自定义数组的排序规则,Comparator比较器对象*///1、Arrays的sort()方法可以默认对数组进行升序排列int ages[] = {1,32,53,78,18,23};Arrays.sort(ages);System.out.println(Arrays.toString(ages));//需求:对数组进行降序排列,需要自定义比较对象(自定义比较对象只能支持引用类型的排序,所以要将Int变为Integer)Integer ages1[] = {9,32,53,78,18,23};/*** 参数一ages1:代表要被排序的数组* 参数二:匿名内部类对象,代表了一个比较器对象*/Arrays.sort(ages1, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {//制定比较规则/*if (o1 > o2) {return 1;}else if (o1 < o2){return -1;}return 0;*///数组升序排列//return o1 - o2;//数组降序排列,也可以return -(o1 - o2);return o2 - o1;}});System.out.println(Arrays.toString(ages1));System.out.println("---------------------------------------------");/*** 如果要排序的是对象数组要怎么办呢?*///创建学生对象Students students[] = new Students[3]; //创建三个学生对象students[0] = new Students("0ss7key",20,180.5);students[1] = new Students("张三",18,177.5);students[2] = new Students("李四",25,160.5);//打印数组,但是发现打印出来的对象的地址,需要去Students类中重写tostring方法System.out.println(Arrays.toString(students));//对对象数组进行排序//Arrays.sort(students); 这样写直接报错Arrays.sort(students, new Comparator<Students>() {@Overridepublic int compare(Students o1, Students o2) {//按照年龄升序排序//return o1.getAge()-o2.getAge();//按照身高生序排序,这里需要用到Double.compare(),因为身高是double类型,如果还用减法去比较可能造成排序混乱return Double.compare(o1.getHeight(), o2.getHeight()); //身高升序排列}});System.out.println(Arrays.toString(students));}}

