> 文章列表 > Java:Arrays类

Java:Arrays类

Java:Arrays类

1、Arrays是啥?

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

2.Arrays类的常用API

方法 说明
public static String toString(类型[] a) 对数组进行排序
public static void sort(类型[] a) 对数组进行默认升序排序
public static <T> void sort(类型[] a,Comparator<? super T> c) 使用比较器对象自定义排序
public static int binarySearch(int[] a,int key) 二分搜索数组中的数据,存在返回索引,不存在返回索引,不存在返回-1
    public static void main(String[] args) {
//        建一个数组int[]arr = {1,8,3,9,5,15,7};
//        输出的是数组对象的内存地址System.out.println(arr);
//        输出数组System.out.println(Arrays.toString(arr));
//        排序的apiArrays.sort(arr);System.out.println(Arrays.toString(arr));
//        二分搜索:binarySearch(数组,要找的元素值),需要先排好序int index = Arrays.binarySearch(arr,15);
//        返回这个元素的位置索引System.out.println(index);
//        返回不存在的元素的规律;-int index1 = Arrays.binarySearch(arr,16);System.out.println(index1);
//        示例:如果没排好序进行二分搜索可能会找不到存在的元素,出现bugint[]arr02 = {11,22,33,66,55,44};System.out.println(Arrays.binarySearch(arr02,44));}

控制台输出结果:

 3.Arrays类对于Comparator比较器的支持

1.Arrays类的排序方法

方法 说明
public sataic void(类型[] a) 对数组进行默认升序排序
public static <T> void sort(类型[] a, Compartor<?super T>c) 使用比较器对象自定义排序

2.自定义排序规则

设置Comparator接口对应的比较器对象,来定制比较规则。

如果认为左边数据 大于 右边数据,则返回正整数。
如果认为左边数据 小于 右边数据,则返回负整数。
如果认为左边数据 等于 右边数据,则返回0。
    public static void main(String[] args) {
//        Arrays的sort方法对于有值特性的数组是默认升序排序的int [] arr = {36,99,72,6,44};
//        未排序System.out.println(Arrays.toString(arr));
//        默认升序排序Arrays.sort(arr);
//        输出升序排序结果System.out.println(Arrays.toString(arr));
//        新建一个数组实现需求:降序排序 自定义比较器对象,只能支持引用类型的排序Integer[]arr2 = {23,55,46,78,3};
//        参数1:被排序的数组,必须是引用类型的元素
//        参数2:匿名内部类对象,代表一个比较器对象Arrays.sort(arr2, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2 -o1;}});System.out.println(Arrays.toString(arr2));}

控制台输出结果:

例子:自定义数组的排序:
定义学生类:

public class Student {private int id;private String name;private int age;public Student(int id, String name, int age) {this.id = id;this.name = name;this.age = age;}public Student() {}public int getId() {return id;}public void setId(int id) {this.id = id;}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;}@Overridepublic String toString() {return "Student{"+"学号:"+id+"姓名:"+name+'\\''+"年龄"+age+'}'+"\\n";}
    public static void main(String[] args) {
//        自定义一个数组Student[] students = new Student[3];students[0] = new Student(10001,"双面龟",34);students[1] = new Student(10002,"小美美",33);students[2] = new Student(10003,"阿酷",32);//        Arrays的sort方法自定义排序规则Arrays.sort(students, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {
//                根据学号进行升序排序return o1. getId() - o2.getId();
//                学号降序,其他同理
//                return o2.getId() -o2.getId();}});System.out.println(Arrays.toString(students));}

控制台输出结果:

 

中华信鸽信息网