美文网首页工作生活
6.Java----比较器

6.Java----比较器

作者: _麻辣香锅不要辣 | 来源:发表于2019-07-15 16:28 被阅读0次
简介

Comparable和Comparator接口都是为了对类进行比较,众所周知,诸如Integer,double等基本数据类型,java可以对他们进行比较,而对于类的比较,需要人工定义比较用到的字段比较逻辑。可以把Comparable理解为内部比较器,而Comparator是外部比较器,基本的写法如下:

Comparable(实现Comparable接口,并重写CompareTo方法)
public class ComparableTest {
    @Test
    public void test1(){
        Person[] pList = new Person[]{
                new Person("test1",11),
                new Person("test2",55),
                new Person("test3",33)
        };
        System.out.println(Arrays.toString(pList));
        Arrays.sort(pList);
        System.out.println(Arrays.toString(pList));
    }

   

class Person implements Comparable{
    private String name;
    private int age;

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

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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 int compareTo(Object o) {
        if(o instanceof Person){
            Person p = (Person)o;
            if(this.age > p.age)
            {
                return 1;
            }else if(this.age < p.age){
                return -1;
            }else{
                return 0;
            }
        }
        throw new RuntimeException("类型不正确");
    }
}
Comparator(生成一个Comparator对象,并重写compare方法)
 @Test
    public void test2(){
        Person[] pList = new Person[]{
                new Person("test1",11),
                new Person("test2",55),
                new Person("test3",33)
        };
        System.out.println(Arrays.toString(pList));
        Arrays.sort(pList, new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                if(o1.getAge() > o2.getAge()){
                    return -1;
                }else if(o1.getAge() < o2.getAge()){
                    return 1;
                }else{
                    return 0;
                }
            }
        });
        System.out.println(Arrays.toString(pList));

    }
}

相关文章

  • 6.Java----比较器

    简介 Comparable和Comparator接口都是为了对类进行比较,众所周知,诸如Integer,doubl...

  • 比较器

    Comparable类   所谓的比较器指的是进行大小关系的确定判断。  如果要进行数组操作,一般都会使用java...

  • 比较器

    比较器问题的引出 比较器指的是进行大小关系的确定判断; 如果要进行数组操作,肯定要使用java.util.Arra...

  • 外部比较器和内部比较器

    内部比较器实现Comparable和外部比较器实现Comparator在剑指offer上遇到了一题,使用外部比较器...

  • Java比较器

    导语 本节内容,比较器Comparable是核心内容。 主要内容 重新认识Arrays类 两种比较器的使用 具体内...

  • 比较器(Comparator)

    当元素自身不具备比较性,或者局部的比较性不是所需要的。这时需要让容器自身具备比较性。定义了比较器,将比较器对象作为...

  • 比较器介绍

    String类中有自己的比较方法,但是它们的比较是按照字符串的字典顺序比较的,我们想自定义比较方法时,java给我...

  • 比较器类

    需求场景: 应用中我们不仅需要比较基本数据类型,对基本数据类型进行排序。有时还需要比较我们自定义的类,对我们自定义...

  • 3.1.1 比较器

    比较器的实质就是重载比较运算符比较器可以很好的应用在特殊标准的排序上比较器可以很好的应用在根据特殊标准排序的结构上

  • 比较器 Comparator

    Comparable接口的主要特征是在类定义的时候就默认实现好的接口,那么如果说现在有一个类已经开发完善了。 以上...

网友评论

    本文标题:6.Java----比较器

    本文链接:https://www.haomeiwen.com/subject/qnvxhctx.html