Java:Arrays类

1、Arrays是啥?

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

2.Arrays类的常用API

方法 说明
public static String toString(类型[] a) 对数组进行排序
public static void sort(类型[] a) 对数组进行默认升序排序
public static void sort(类型[] a,Comparator 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));
//        排序的api
        Arrays.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);
//        示例:如果没排好序进行二分搜索可能会找不到存在的元素,出现bug
        int[]arr02 = {11,22,33,66,55,44};
        System.out.println(Arrays.binarySearch(arr02,44));
    }

控制台输出结果:

Java:Arrays类_第1张图片

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

1.Arrays类的排序方法

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

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() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 -o1;
            }
        });
        System.out.println(Arrays.toString(arr2));
    }

控制台输出结果:

Java:Arrays类_第2张图片

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

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;
    }

    @Override
    public 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() {
            @Override
            public int compare(Student o1, Student o2) {
//                根据学号进行升序排序
                return o1. getId() - o2.getId();
//                学号降序,其他同理
//                return o2.getId() -o2.getId();
            }
        });
        System.out.println(Arrays.toString(students));
    }

控制台输出结果:

Java:Arrays类_第3张图片

 

你可能感兴趣的:(Java基础,java,c#,开发语言)