Java Comparable和Comparator(2)

简介: Java Comparable和Comparator

Comparator

package com.mwq.comparator;
public class BeautyGirl {
    private int age;
    private Double height;
    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 "美女{年龄:" + this.getAge() + "身高:" + this.getHeight() + "}";
    }
}
package com.mwq.comparator;
import java.util.Comparator;
/**
 * 实现美女的排序
 */
public class BeautyGirlComparator implements Comparator<BeautyGirl> {
    @Override
    public int compare(BeautyGirl girl1, BeautyGirl girl2) {
        // 姑且把年龄放在第一位
        if (girl1.getAge() == girl2.getAge()) {
            return compareHeight(girl1, girl2);
        } else {
            return girl1.getAge() - girl2.getAge();
        }
    }
    private int compareHeight(BeautyGirl girl1, BeautyGirl girl2) {
        // 把身高放在第二位
        return girl1.getHeight().compareTo(girl2.getHeight());
    }
}


这样是使用排序的时候,只要你指定一个新的规则,就会按照新的规则来排序,而不需要再变更BeautyGirl类。例如,你可以按照身高优先、年龄次之的排序。


总结:两者的区别就在于排序规则的制定,如果排序规则善变,那么使用comparator是个好办法,如果规则固定,实现comparable更好,至少少写一个类。


相关文章
|
26天前
|
Java 程序员
Java 排序神器:Comparable 和 Comparator 该怎么选?
嗨,大家好,我是小米!今天和大家聊一聊Java社招面试中常考的经典问题——Comparable和Comparator的区别。Comparable定义对象的自然排序,适用于单一固定的排序规则;Comparator则是策略接口,用于定义自定义排序规则,适用于多样化或多变的排序需求。掌握这两者的区别是理解Java排序机制的基础,也是面试中的加分题。结合实际项目场景深入探讨它们的应用,能更好地打动面试官。如果你觉得有帮助,欢迎点赞、收藏、分享,期待你的一键三连!我们下期见~ 我是小米,一个喜欢分享技术的程序员,关注我的微信公众号“软件求生”,获取更多技术干货!
44 20
|
6月前
|
搜索推荐 Java
Java 中 Comparator 和 Comparable 的区别
【8月更文挑战第22天】
100 0
|
6月前
|
Java
"Java排序大揭秘:Comparable与Comparator,究竟有何神秘区别?掌握它们,告别排序难题!"
【8月更文挑战第19天】Java提供Comparable与Comparator两种排序机制。Comparable位于`java.lang`包,定义了`compareTo()`方法以实现类的自然排序;Comparator位于`java.util`包,通过`compare()`方法提供外部定制排序。实现Comparable固定了排序策略,适用于类自带排序逻辑;使用Comparator则可在不改动类的前提下灵活定义多种排序规则,适合多样化的排序需求。选择合适机制可优化排序效率并增强代码灵活性。
39 0
|
9月前
|
Java
彻底搞懂Java中的Comparable和Comparator
彻底搞懂Java中的Comparable和Comparator
308 0
|
8月前
|
Java
Java中Comparable接口和Comparator接口的区别(如果想知道Java中Comparable接口和Comparator接口的区别,那么只看这一篇就足够了!)
Java中Comparable接口和Comparator接口的区别(如果想知道Java中Comparable接口和Comparator接口的区别,那么只看这一篇就足够了!)
|
9月前
|
Java
【JAVA学习之路 | 提高篇】Java比较器(comparable) &&(comparator)
【JAVA学习之路 | 提高篇】Java比较器(comparable) &&(comparator)
|
9月前
|
Java
【Java】通过Comparator比较器的方式给对象数组排序
【Java】通过Comparator比较器的方式给对象数组排序
74 0
|
9月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--Comparable接口
数据结构与算法(Java篇)笔记--Comparable接口
|
9月前
|
Java
java 实现Comparable接口排序,升序、降序、倒叙
java 实现Comparable接口排序,升序、降序、倒叙
72 0
|
算法 Java 开发者
21. 你能说说Java中Comparable和Comparator的区别吗
21. 你能说说Java中Comparable和Comparator的区别吗
111 0