博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
compareTo返回值为-1 、 1 、 0 的排序问题
阅读量:6375 次
发布时间:2019-06-23

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

1.什么是Comparable接口

此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。 强烈推荐(虽然不是必需的)使自然排序与 equals 一致。所谓与equals一致是指对于类 的每一个 e1和 e2 来说,当且仅当 (e1.compareTo((Object)e2) == 0) e1.equals((Object)e2) 具有相同的布尔值时,类 的自然排序才叫做与 equals 一致 。

2.实现什么方法

int compareTo(T o)比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。 强烈推荐 (x.compareTo(y)==0) == (x.equals(y)) 这种做法,但不是 严格要求这样做。一般来说,任何实现 Comparable 接口和违背此条件的类都应该清楚地指出这一事实。推荐如此阐述:“注意:此类具有与 equals 不一致的自然排序。” 参数:       o - 要比较的对象。 返回:
负整数、零或正整数,根据此对象是小于、等于还是大于指定对象。 抛出:
ClassCastException - 如果指定对象的类型不允许它与此对象进行比较。

3.实例

package test1;public class Note
implements Comparable
> { private T data; //数据 private int weight; //权值 private Note
left; //左孩子 private Note
right; //右孩子 public Note(T data,int weight){ this.data=data; this.weight=weight; } @Override public String toString(){ return "data="+this.data+",weitht="+this.weight; } public T getData() { return data; } public void setData(T data) { this.data = data; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public Note
getLeft() { return left; } public void setLeft(Note
left) { this.left = left; } public Note
getRight() { return right; } public void setRight(Note
right) { this.right = right; } /** * 倒序排列。 */ @Override public int compareTo(Note
o) { if(o.weight>this.weight){ return 1; }else if(o.weight
o){// if(this.weight>o.weight){// return 1;// }else if(this.weight

Ps:(快速记忆法)当前对象与后一个对象进行比较,如果比较结果为1进行交换,其他不进行交换。

当后一个对象比当前对象大,返回结果值为1时,前后交换,说明是倒序排列。

当后一个对象比当前对象小,返回结果值为1时,前后交换,说明是升序排列。

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

你可能感兴趣的文章
[java] java 中Unsafe类学习
查看>>
HDU 1231——最大连续子序列(DP)
查看>>
P1739 表达式括号匹配
查看>>
3.1.4 模板字符串
查看>>
redis 介绍和常用命令
查看>>
CPU的段寄存器
查看>>
linux 安装nginx
查看>>
Kettle的概念学习系列之Kettle是什么?(一)
查看>>
Qt 3D教程(二)初步显示3D的内容
查看>>
100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)【转】
查看>>
compareTo返回值为-1 、 1 、 0 的排序问题
查看>>
Being a Good Boy in Spring Festival(杭电1850)(尼姆博弈)
查看>>
微服务间如何选择推送和拉取数据
查看>>
互联网+时代IT管理者的转型
查看>>
Linux系统调用--getrlimit()与setrlimit()函数详解【转】
查看>>
限制容器的 Block IO - 每天5分钟玩转 Docker 容器技术(29)
查看>>
cocos2dx下的A星算法
查看>>
RabbitMQ的应用场景以及基本原理介绍(转)
查看>>
Nginx:413 Request Entity Too Large解决
查看>>
飘雪代码2枚
查看>>