`
betakoli
  • 浏览: 168767 次
社区版块
存档分类
最新评论

策略模式之Comparator与Comparable

 
阅读更多

用 Comparator 是策略模式(strategy design pattern),就是不改变对象自身,而用一个策略对象(strategy object)来改变它的行为。

Comparable也是策略模式的使用

区别:

Comparator 实现compare(T1,T2) , Arrays.sort(T[],Comparator );

Comparable实现compareTo(T1) 一般放在对象类中,实现:Arrays.sort(Object T[]);

区别,就在于Comparable直接在类中实现,而Comparator将类的比较提出来,分离了。

 

 

分享到:
评论

相关推荐

    Comparable与Comparator的区别

    这种设计模式被称为策略模式,它可以灵活地改变对象的排序策略。 当你需要的比较规则超出了对象自身提供的比较能力,或者不想修改原始类的源代码时,Comparator接口就派上用场了。Comparator接口有一个`compare()`...

    java策略模式

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。这种模式允许你使用相同的接口来表示不同的算法,使得代码更加灵活,易于扩展。在Java中,策略模式的实现通常涉及接口和实现该接口的类,以及一个使用...

    23种设计模式的实现(Java 版)

    在Java中,通常通过实现Comparable或Comparator接口来处理对象间的比较。 7. **装饰器模式**:动态地给一个对象添加一些额外的职责,比继承更灵活。Java的InputStream和OutputStream类族就是装饰器模式的典型应用。...

    Java核心技术 卷II 高级特性(原书第9版)

    - 常见设计模式的使用场景和代码实现,比如单例模式、工厂模式和策略模式等。 在《Java核心技术 卷II 高级特性(原书第9版)》的学习中,读者能够全面而深入地理解Java编程的高级特性,对Java的集合、并发、I/O、...

    java进阶(文件读写、递归、数组排序、单体工厂模式)

    对于自定义类型的数组,需要实现`Comparable`接口或者提供`Comparator`来支持排序。 最后,我们来学习单体工厂模式。这是一种简单的工厂模式,主要用于创建单个类的对象。在Java中,单体工厂通过将构造器设为私有,...

    JAVA面试试题大全

    - 接口与实现:例如Iterable、Comparator和Comparable。 6. **多线程**: - Thread类和Runnable接口:知道如何创建和控制线程。 - 同步机制:理解synchronized关键字和wait/notify机制,以及死锁问题。 - ...

    求职宝典-Java 基础面试题

    - **策略模式**:封装一系列算法,让它们可以互相替换,使算法的变化独立于使用它的客户。 - **模板模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该...

    面向对象 排序

    此外,`Comparator`接口允许我们为不支持`Comparable`的类提供外部排序规则。 5. 性能优化: - 对于大规模数据,可以考虑使用并行或并发排序算法,如Java的`Arrays.parallelSort()`,它利用多核处理器提高性能。 ...

    Java面试文档

    3. **集合框架**:Java集合框架是面试中的热点,包括List(ArrayList、LinkedList)、Set(HashSet、TreeSet)、Map(HashMap、TreeMap)等接口和实现类的理解和使用,以及泛型、迭代器、Comparable与Comparator接口...

    java面试.pdf

    - **Comparator**:允许自定义比较逻辑,体现了策略模式,更加灵活。 8. **面向对象**: - 面向对象包括继承、封装和多态,有助于模块化设计,简化复杂问题,提高代码复用性。 - 多态允许子类对象替换基类对象,...

    很多java面试题目题目,pdf清晰版电子书。很不错

    - `HashSet` 和 `TreeSet`:`HashSet` 是无序且不保证元素顺序的,而 `TreeSet` 通过 `Comparator` 或 `Comparable` 自然排序。 2. **多线程**: - 创建线程的方式:继承 `Thread` 类,实现 `Runnable` 接口,...

    labj8-lambda-enum

    标题“labj8-lambda-enum”表明这是一个关于Java编程的实验或教程,重点在于使用Lambda表达式和枚举类型来实现策略模式。这个项目可能是为了帮助开发者更好地理解和应用这两种强大的Java特性。策略模式是一种行为...

    Java面试宝典2012版

    3. 排序与比较:讲解Comparable和Comparator接口,以及如何自定义比较规则。 三、多线程 1. 线程创建:通过Thread类和Runnable接口创建线程,以及线程的生命周期和状态。 2. 同步机制:深入分析synchronized...

    java面试题目

    16. **集合框架高级**:TreeSet、TreeMap的内部实现,以及Comparator和Comparable接口的使用。 17. **设计模式**:熟悉常见的设计模式,如单例、工厂、观察者、适配器、装饰器等,并能结合实际场景应用。 18. **...

    4.java面试题(格式PDF)

    此外,面试题可能涵盖泛型、迭代器、Comparable与Comparator接口、TreeSet与TreeMap的排序原理等。 4. **异常处理**:理解try-catch-finally语句块、异常的分类(检查异常和运行时异常)、自定义异常以及如何优雅地...

    java面试题目 题库

    4. **集合框架**:面试题目整理-service.docx可能会涉及ArrayList、LinkedList、HashMap、HashSet等集合类的特性、操作和使用场景,以及泛型、迭代器、Comparable与Comparator接口的应用。 5. **多线程**:Java提供...

    javamianshi.rar_java 试题_java 面试_java 面试题_java面试_面试

    3. 排序与比较:掌握Collections.sort()方法,以及Comparable和Comparator接口的应用。 三、多线程 1. 线程创建:通过Thread类和Runnable接口创建线程。 2. 线程同步:理解synchronized关键字,wait()、notify()和...

    JAVA面试笔试题

    在Java中,为了方便对自定义对象进行排序,可以使用`Comparable`接口或`Comparator`接口。这里以`Comparator`为例进行说明。 假设有一个`Student`类,包含`name`、`code`、`age`和`agent`属性,要按`age`进行排序,...

    java项目开发总结.pdf

    具体实现包括ArrayList、HashSet、HashMap,以及迭代器(Iterator)、equals()、hashCode()、Comparable和Comparator接口。 4. **常用类**:深入理解String类、常量池、StringBuilder和StringBuffer用于字符串操作,...

Global site tag (gtag.js) - Google Analytics