JAVA比较器:Comparable和Comparator
项目开发中,当我们遇到对象级别的数组或集合的排序或去重往往就会使用到比较器,java的比较器有两种:Comparable和Comparator。
1).Comparable的使用
使用comparable时在被比较对象所在类上直接去实现Comparable接口就可以了,泛型写类本身,此接口中只定义了一个抽象方法,用户使用此方法只需要返回3种结果:-1,0,1即可,如下图所示。
输出结果为升序排列:
2).Comparator的使用
当一个类写完后没有实现Comparable接口却需要实现对象比较接口时可以使用比较器(Comparator),此接口不同于Comparable在java.lang中而是在java.util中,是一个功能型接口,实现时需要覆写其compare(T o1,T o2)方法。
本次范例使用了Lamda表达式通过Comparator接口完成了对象比较操作。
输出结果降序排列:
两个比较器的区别:
·java.lang.Comparable接口实在一个类定义时实现好的接口,这样本类的对象数组就可以通过Arrays.sort()方法进行排序,在此接口下定义了一个compareTo()方法。
·java.util.Comparator是专门定义一个指定类的比较规则,属于挽救的比较操作,里面有两个抽象方法:public int compare()、public boolean equals()。