Comparator和Comparable在排序中的应用

来源:互联网 发布:一览 for mac 编辑:程序博客网 时间:2024/06/07 19:10
当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。

一、Comparator

强行对某个对象collection进行整体排序的比较函数,可以将Comparator传递给Collections.sort或Arrays.sort。

接口方法:

public class SalesItemComparatorByFirstLetter implements Comparator<SalesItem> {@Overridepublic int compare(SalesItem lhs, SalesItem rhs) {return lhs.getFirstLetter().compareTo(rhs.getFirstLetter());}}
SalesItem类里面存储有字母,这里根据字母来进行排序
调用
Collections.sort()方法即可排序完成:
Collections.sort(datasource, new SalesItemComparatorByFirstLetter()); 

二、Comparable
让类实现
implements  Comparable<Person>接口
重写里面的方法

@Overridepublic int compareTo(Person o) {return this.age.compareTo(o.getAge());}

然后调用 Collections.sort()方法进行排序,里面传入Person的list集合:
 
 Collections.sort(person);
排序是用person的Age进行排序的。 

三、Comparator和Comparable的区别
一个类实现了Camparable接口则表明这个类的对象之间是可以相互比较的,这个类对象组成的集合就可以直接使用sort方法排序。
Comparator可以看成一种算法的实现,将算法和数据分离,Comparator排序要自己去创建一个类,并实现Comparator接口,Comparator也可以在下面两种环境下使用:
1、类的设计师没有考虑到比较问题而没有实现Comparable,可以通过Comparator来实现排序而不必改变对象本身
2、可以使用多种排序标准,比如升序、降序等 
注:
int compare(Object o1, Object o2) 返回一个基本类型的整型
如果要按照升序排序,
则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)
如果要按照降序排序
 则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数) 


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果7指纹坏了怎么办 苹果6指纹坏了怎么办 指纹浅打不了卡怎么办 我要贷款5万怎么办 拍拍贷一千不还怎么办 牙龈肿里面有脓怎么办 爱奇艺会员账号忘了怎么办 被私立医院坑了怎么办 在医院被坑了怎么办 流产后子宫内膜薄怎么办 人流后内膜过厚怎么办 子宫内膜薄月经量少怎么办 子宫内膜很薄该怎么办 月经量少子宫内膜薄怎么办 子宫内薄没月经怎么办 感冒20多天不好怎么办 皮肤干燥又痒怎么办了 眼周皮肤很干怎么办 产后掉头发很厉害怎么办 班上学生很吵怎么办 进了网贷黑名单怎么办 预约了挂号没去怎么办 吃完米索手心痒怎么办 三岁宝宝湿疹了怎么办 割完剥皮后水肿怎么办 微医预约挂号后怎么办 人流后出现腰疼怎么办 生育服务单丢了怎么办 客厅地面砖坏了怎么办 门锁很涩不好开怎么办 胶水粘到手机上怎么办 沾鞋胶水粘到手怎么办 轮胎内衬板坏了怎么办 轿车后减震异响怎么办 租的房间隔音差怎么办 彩钢房顶下雨响怎么办 酷派手机开不开机怎么办 酷派手机无法开机怎么办 酷派手机丢了怎么办 实木家具掉漆了怎么办 木桌子上有划痕怎么办