博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Comparable Comparator equals
阅读量:6429 次
发布时间:2019-06-23

本文共 1548 字,大约阅读时间需要 5 分钟。

为了让类的对象间可以排序,通常有两种方法——Comparable<T> 与 Comparator<T>。
为了判断两个对象是否相等与Set中去重,通常重写根类的equals()方法。
为了逻辑一致:
强烈建议重写comparableTo()后也重写equals()方法。

Comparable泛型接口

int java.lang.Comparable.
compareTo(T o)
本对象与参数进行对比。返回为负表示小于,零表示相等,正数表示大于。
Compares this object with the specified object for order. Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object. 

Comparator泛型接口

int StudentComparator.
compare(Student o1, Student o2)
返回值约定同Comparable泛型接口。
当一个类没有实现Comparable接口而又希望对它排序时,可以用Comparator。
<Object> Comparator<Object> java.util.Collections.
reverseOrder()
返回一个comparator,它的规则是自然顺序的倒序。自然顺序与类继承的Comparable接口实现有关。通常用于List的从大到小排列。
Returns a comparator that imposes the reverse of the natural ordering on a collection of objects that implement the Comparable interface.

equals()重写

equals(Object obj)是Object类的方法,实现见下:
//Object.java public boolean equals(Object obj) {        return (this == obj);    }
对于自定义的类,可重写此方法达到想要的目的。可参照JDK中String类的equals方法:
如果一个类已经有了compareTo()方法,就可以这么写:
@Overridepublic boolean equals(Object obj) {	return compareTo((E)obj)==0;}
下面代码是一个实用的方法,比较两个Object:
然后,对于自定义的类,就可以这样调:
public class BWGRecheckRequest {	//'online' or 'h5' or 'app'	public String source;	//'ip' or 'clientid'	public String keyType;	//accurate ip or clientid	public String theKey;	//flight,hotel,tuan,and so on	public String channel;		@Override	public int hashCode() {		return MyEqualsUtil.hashCode(this);	}		@Override	public boolean equals(Object obj) {		return MyEqualsUtil.equals(this, obj);	}}

转载地址:http://awsga.baihongyu.com/

你可能感兴趣的文章
客户网页WIZnet无线解决方案 之 太阳能逆变器
查看>>
编译用户Orcle的package中访问其它Schema的表
查看>>
Webservice SOAP传输序列化总结
查看>>
迷你 MVVM框架avalon的使用教程
查看>>
有符号数和无符号数的区别
查看>>
Dalvik虚拟机的启动过程分析
查看>>
C#写入文本文件,避免乱码Encoding.GetEncoding("gb2312")
查看>>
【零基础学习iOS开发】【02-C语言】05-进制
查看>>
停机文件[Warning] Unsafe statement written to the binary log using statement format since 错误
查看>>
Android Studio常用设置
查看>>
JAVA排序算法之 选择排序
查看>>
如何调用并解析调用远程接口返回的xml数据
查看>>
Windows Phone 几种弹出框提示方式
查看>>
Linux下链接mysql数据库的命令
查看>>
将不确定变为确定~DateTime.MinValue和MaxValue引发的异常
查看>>
Arduino入门笔记(2):Arduino的开发和virtualbreadboard仿真环境
查看>>
xml基础总结
查看>>
Nginx 日志分析
查看>>
CodeForces Round #173 (282E) - Sausage Maximization 字典树
查看>>
CCRepeatForever和CCDelayTime
查看>>