Comparable和Comparator
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相关推荐
- Java 中 Comparable 和 Comparator 比较
为什么80%的码农都做不了架构师?>>> 本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示例,对它们的使用方法进行说明. Comp ...
- Java 解惑:Comparable 和 Comparator 的区别
读完本文你将了解到: Comparable 自然排序 Comparator 定制排序 总结 Java 中为我们提供了两种比较机制:Comparable 和 Comparator,他们之间有什么区别呢? ...
- 对象比较:Comparable 和 Comparator
java中我们如何给对象排序?这就必须借助Comparator 或 Comparable.有了他们就意味着你可用实现对象之间的比较.也就可用做到排序了. Comparable Comparable 也 ...
- Java核心API -- 7(Iterator迭代器、Comparable、Comparator比较器)
1. Iterator迭代器 所有Collection的实现类都实现了iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对集合元素迭代的便利.在java.util包下. 1) ...
- java compareto方法怎么排序的_深入理解Java中Comparable和Comparator排序
本文有牛旦教育原创,头条首发,转载注明来源. 如何为需要的排序算法选择正确的接口?通过本文的分析讲解,我们会找到答案参考答案. 程序员经常需要将数据库中的元素排序为集合.数组或映射.在Java中,我们 ...
- Java中Comparable和Comparator区别小结
阅读目录 一.Comparable简介 二.Comparator简介 三.Comparable和Comparator区别比较 回到顶部 一.Comparable简介 Comparable是排序接口.若 ...
- comparable和comparator比较
今天在翻阅TreeMap的源码,发现其键必须是实现Comparable或者Comparator的接口时产生了一些兴趣,比如在TreeMap中的put方法分别对Comparable和Comparat ...
- Java中Comparable与Comparator的区别
一.概述 Comparable和Comparator都是用来实现集合中元素的比较.排序的. Comparable是在集合内部定义的方法实现的排序,位于java.util下. Comparator是在集 ...
- Comparable与Comparator浅析
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- Java中Comparable和Comparator接口区别分析
本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧. Comparable 简介 Comp ...
最新文章
- 每日一皮:只有第一名才能拿金牌...
- 动态规划的用法——01背包问题
- Spring中自动装配的方式有哪些?
- DCFNET: DISCRIMINANT CORRELATION FILTERS NETWORK FOR VISUAL TRACKING
- ajax读取.txt文件出现乱码
- python gevent模块 下载_【python安全攻防】包、模块、类、对象
- win7旗舰版系统关闭自动更新功能教程
- 依赖反转原理,IoC容器和依赖注入:第3部分
- 在线云客服管理系统、会话管理、访客管理、客户管理、工单管理、会话记录、考勤统计、数据报表、工单设置、全局设置、转人工服务、自动回复、客户标签、客服监控、客服系统、前端会话、客服管理、在线客服、人工客服
- 12款Javascript表格控件(DataGrid)
- 李迅雷+老龄化下中青年人消费心态的变化的角度来看未来十倍股
- idea创建jsp项目与JDBC连接数据库
- 《大学物理》知识点总结
- 芝麻信用分有哪些计算维度?关于大数据风控的87个问题
- 红色彼岸花计算机谱子,ceecceec
- 国惠光电短波红外相机资料下载
- Vite css 热重载失效
- 《游戏设计艺术(第2版)》——学习笔记(17)第17章 有种体验叫作故事
- 计算机音乐我还是曾经那个少年,我还是曾经的那个少年什么歌曲?是谁唱的?求科普!...
- js onclick传参对象_js中onClick([object object])的传参问题。跪求!