您的位置:首页 > 编程语言 > Java开发

java中Collections.sort排序详解

2017-12-25 15:57 232 查看
有时候从数据库中取出的数据不仅仅需要在数据库中用sql语句中的order by 因为这只适用于取值一次的时候,当你的list是两次或者以上从数据库取出的数据拼起来的时候,如果需要根据list里面某一属性去排序的话就需要用到Collections.sort排序

Comparator是个接口,可重写compare()及equals()这两个方法,如果是null的话,就是使用元素的默认顺序,如a,e,d,c,b,f,g,就是a,b,c,d,e,f,g这样,当然数字也是这样的。

compare(a,b)方法:根据第一个参数小于、等于或大于第二个参数分别返回-1、0或1。


equals(obj)方法:仅当指定的对象也是一
Comparator,并且强行实施与此 Comparator 相同的排序时才返回 true。
temp.put("projectids", CtPmProjectService.me.getLoginProj());
temp.put("statuses", new String[]{"opened","dealed","cancel","lay","laid","verified","canceled"});
list = list(temp);//原始的list
if(IStr.isEmpty(ctPmBug.get("status")) || "dealing".equals(ctPmBug.getStr("status"))){
ctPmBug.put("e
4000
xecoprt",IKit.getLoginUser().getTitle());//这是在判断登录人身份
ctPmBug.put("status","dealing");//这个是我list里面的字段
list.addAll(list(ctPmBug));//往list里面增加其他符合要求的数据,这里可以看出list是由两部分组成
}
Collections.sort(list,new Comparator<CtPmBug>() {
@Override
public int compare(CtPmBug o1, CtPmBug o2) {
return o2.getInt("level").compareTo(o1.getInt("level"));//level是我list里面需要排序字段
}

});


这样就实现了最终的数据是按level这个字段排序的而不会受list是两部分影响,不然排序会先按照list先加进去的一部分根据level排序,后加进去的会在第一部分排完后在根据level排序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: