2019独角兽企业重金招聘Python工程师标准>>>

Comparable 是内比较器,就是可以和自己比较。当然也可以采用其他比较方式,主要看compareTo方法。在Collections中要实现有顺序的容器,则容器里的元素必须要实现Comparable .如TreeSet ,TreeMap。 如下:

package com.bb.bbtest;import javax.persistence.criteria.CriteriaBuilder;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;/*** Created by lenovo on 2017/3/21.*/
public class Dog  implements Comparable<Dog>{private int i ;public int getI() {return i;}public void setI(int i) {this.i = i;}@Overridepublic int compareTo(Dog o) {if(this.i == o.getI()){return 0;}else if(this.i>o.getI()){return 1;}return -1;}public static void main(String[] args) {Dog dog = new Dog();Dog dog2 = new Dog();dog.setI(10);dog.setI(4);TreeSet<Dog> dogTreeSet = new TreeSet<Dog>();dogTreeSet.add(dog);dogTreeSet.add(dog2);System.out.println(dogTreeSet.toString());}}

Comparator可以认为是是一个外比较器,有两点会使用到它,注意compare比较的两个结果一定是同一种类型。 1、一个对象不支持自己和自己比较(没有实现comparable接口),但是又想对这两个对象进行比较。 2、一个对象已经实现了Comparable接口,但是里面的逻辑不是开发者想要的。

package com.bb.bbtest.util;import java.util.Comparator;/*** Created by lenovo on 2017/5/7.*/
public class Cat implements Comparator<Cat>{public int getI() {return i;}public void setI(int i) {this.i = i;}private int i ;@Overridepublic int compare(Cat o1, Cat o2) {if(o1.getI() == o2.getI()){return 0;}else if(o1.getI() >o2.getI()){return 1;}return -1;}
}

比较

1、如果实现类没有实现Comparable接口,又想对两个类进行比较(或者实现类实现了Comparable接口,但是对compareTo方法内的比较算法不满意),那么可以实现Comparator接口,自定义一个比较器,写比较算法

2、实现Comparable的方式比Comparator的方式耦合性要强一些。如果要修改比较逻辑,则要修改实现类(因为自己和其他的比较)。而实现Comparator的类是在外部比较的,不需要对实现类有任何修改

转载于:https://my.oschina.net/ouyangtaohong/blog/894331

Comparable和Comparator相关推荐

  1. Java 中 Comparable 和 Comparator 比较

    为什么80%的码农都做不了架构师?>>>    本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示例,对它们的使用方法进行说明. Comp ...

  2. Java 解惑:Comparable 和 Comparator 的区别

    读完本文你将了解到: Comparable 自然排序 Comparator 定制排序 总结 Java 中为我们提供了两种比较机制:Comparable 和 Comparator,他们之间有什么区别呢? ...

  3. 对象比较:Comparable 和 Comparator

    java中我们如何给对象排序?这就必须借助Comparator 或 Comparable.有了他们就意味着你可用实现对象之间的比较.也就可用做到排序了. Comparable Comparable 也 ...

  4. Java核心API -- 7(Iterator迭代器、Comparable、Comparator比较器)

    1. Iterator迭代器 所有Collection的实现类都实现了iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对集合元素迭代的便利.在java.util包下. 1) ...

  5. java compareto方法怎么排序的_深入理解Java中Comparable和Comparator排序

    本文有牛旦教育原创,头条首发,转载注明来源. 如何为需要的排序算法选择正确的接口?通过本文的分析讲解,我们会找到答案参考答案. 程序员经常需要将数据库中的元素排序为集合.数组或映射.在Java中,我们 ...

  6. Java中Comparable和Comparator区别小结

    阅读目录 一.Comparable简介 二.Comparator简介 三.Comparable和Comparator区别比较 回到顶部 一.Comparable简介 Comparable是排序接口.若 ...

  7. comparable和comparator比较

      今天在翻阅TreeMap的源码,发现其键必须是实现Comparable或者Comparator的接口时产生了一些兴趣,比如在TreeMap中的put方法分别对Comparable和Comparat ...

  8. Java中Comparable与Comparator的区别

    一.概述 Comparable和Comparator都是用来实现集合中元素的比较.排序的. Comparable是在集合内部定义的方法实现的排序,位于java.util下. Comparator是在集 ...

  9. Comparable与Comparator浅析

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  10. Java中Comparable和Comparator接口区别分析

    本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧. Comparable 简介 Comp ...

最新文章

  1. 每日一皮:只有第一名才能拿金牌...
  2. 动态规划的用法——01背包问题
  3. Spring中自动装配的方式有哪些?
  4. DCFNET: DISCRIMINANT CORRELATION FILTERS NETWORK FOR VISUAL TRACKING
  5. ajax读取.txt文件出现乱码
  6. python gevent模块 下载_【python安全攻防】包、模块、类、对象
  7. win7旗舰版系统关闭自动更新功能教程
  8. 依赖反转原理,IoC容器和依赖注入:第3部分
  9. 在线云客服管理系统、会话管理、访客管理、客户管理、工单管理、会话记录、考勤统计、数据报表、工单设置、全局设置、转人工服务、自动回复、客户标签、客服监控、客服系统、前端会话、客服管理、在线客服、人工客服
  10. 12款Javascript表格控件(DataGrid)
  11. 李迅雷+老龄化下中青年人消费心态的变化的角度来看未来十倍股
  12. idea创建jsp项目与JDBC连接数据库
  13. 《大学物理》知识点总结
  14. 芝麻信用分有哪些计算维度?关于大数据风控的87个问题
  15. 红色彼岸花计算机谱子,ceecceec
  16. 国惠光电短波红外相机资料下载
  17. Vite css 热重载失效
  18. 《游戏设计艺术(第2版)》——学习笔记(17)第17章 有种体验叫作故事
  19. 计算机音乐我还是曾经那个少年,我还是曾经的那个少年什么歌曲?是谁唱的?求科普!...
  20. js onclick传参对象_js中onClick([object object])的传参问题。跪求!

热门文章

  1. 【华为编程大赛】洞穴逃生
  2. ADO.Net 精简的三层架构
  3. total commander按文件夹大小显示
  4. 一个实用的JS自定义函数addLoadEvent()
  5. Spring Bean懒加载与非懒加载
  6. python3 selenium ie 拒绝连接报错_python Selenium权限错误:[WinError 5]访问被拒绝
  7. SDOI2010 代码拍卖会
  8. .Net中的RealProxy实现AOP
  9. “地球观光之旅”来到这座赛博朋克的城市了!
  10. 序列化之XML序列化技术