比较器有两种方法哦!

方法一:实现接口Comparable,覆写compareTo()完成比较

如果最开始的类在设计时就需要排序功能时就可以使用这个方法!!!!

这是最常用的一种方法也是今天小编重点介绍的方法哟!

小编以范例为主来介绍今天的内容哈!!!!

 

package com.xy.text;                     //包名

import java.lang.reflect.Array;
import java.util.Arrays;

public class Person implements Comparable<Person> {   //implements(实现)  Comparable(接口)   <Person>(尖括号里的是需要比较的对象)
    private String name;    //定义私有的名称
    private int age;        //定义私有的年龄

    public Person(String name, int age) {        //构造器
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {               //覆写的toString方法,输出内容 
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public static void main(String[] args) {
        Person Arrper[] = {                 //定义一个对象数组,其中的对象如下
                new Person("张三", 13),        //创建一个新的对象Person,这个对象中的为张三,13岁
                new Person("李四", 23),  
                new Person("王五", 18),
                new Person("刘六", 18),
                new Person("小七", 29)
        };
        Arrays.sort(Arrper);         //调用Arrays.sort(),可以对对象进行升序排序,此时已经排好序了,但是输出的是数组对象的地址
        for (int i = 0; i < Arrper.length; i++) {    //对对象数组进行遍历输出
            System.out.println(Arrper[i]);
        }
        
    }

    @Override
    public int compareTo(Person per) {    //覆写的compareTo方法进行比较
        //按照年龄从低到高排序
        if (this.age > per.age) {        //this.age是指当前的年龄    per.age是指对象中的age
            return 1;
        } else if (this.age < per.age) {
            return -1;
        } else if (this.age == per.age) {      //如果年龄一样大,那么就利用String中的比较器compareTo,String中的compareTo()的作用是,按照字母表顺序来排序
            return per.name.compareTo(this.name);      /按照名字第一个字母来排序
        }
   return 0;
    }
}

具体的都在代码注释里解释啦!

方法二:实现接口Comparator  (当初此类没有排序功能,后来需要排序功能,使用Comparator接口)

第二中方法不太常用,小编也不太了解,等小编了解到了再做分享啦!!!!

(小编也在努力学习更多哟!以后会多多分享哒!)

希望对友友们有所帮助!!!!