Java中的Arrays类

Java中的Arrays类

  • Arrays类概述
  • Arrays类对于Comparator比较器的支持

Arrays类概述

数组操作工具类,专门用于操作数组元素的。
Arrays类的常用API
Java中的Arrays类_第1张图片

package snow.d7_arrays;
import java.util.Arrays;

public class ArraysDemol {
    public static void main(String[] args) {
        int[] arr = {10,2,3,4,5,6};
        // 查看内存地址
        System.out.println(arr);
        // 查看数组元素toString
        String re = Arrays.toString(arr);
        System.out.println(re);
        // 自动数组元素排序
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        // 二分搜索技术(前提数组排好序)
        int index = Arrays.binarySearch(arr, 3);
        System.out.println(index);
    }
}

Arrays类对于Comparator比较器的支持

Arrays类的排序方法
Java中的Arrays类_第2张图片
自定义排序规则
设置Comparator接口对应的比较器对象,来定制比较规则。

如果认为左边数据 大于 右边数据 返回正整数
如果认为左边数据 小于 右边数据 返回负整数
如果认为左边数据 等于 右边数据 返回0
package snow.d7_arrays;

import java.util.Arrays;
import java.util.Comparator;

public class ArraysDemo1 {
    public static void main(String[] args) {
        // 自定义排序规则Comparator
        int[] ages = {34,12,42,23};
        // Arrays的sort方法对于有值特性的数组是默认升序排序
        Arrays.sort(ages);
        System.out.println(Arrays.toString(ages));
        // 降序排序
        Integer[] ages1 = {34,12,42,23};
        /**
         * 参数一:被排序的数组 必须是引用类型的元素
         * 参数二:匿名内部类对象,代表了一个比较器对象
         */
        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("snow",22,174);
        students[1] = new Student("dream",25,168);
        students[2] = new Student("瑞云",24,173);
        System.out.println(Arrays.toString(students));
        // 排序
        Arrays.sort(students, new Comparator <Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                // 自己指定规则
                // return o1.getAge() - o2.getAge(); // 根据年龄升序
                // return o2.getAge()-o1.getAge(); // 根据年龄降序
                // 浮点型比较
                return Double.compare(o1.getHeight(), o2.getHeight()); // 升序
            }
        });
        System.out.println(Arrays.toString(students));
    }
}

Student.java

package snow.d7_arrays;

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(double height) {
        this.height = height;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", height=" + height +
                '}';
    }
}

你可能感兴趣的:(java,java,算法,排序算法)