1700444570
1700444571
//两个职员
1700444572
1700444573
list.add(new Employee(1002,“李四”,Position.Staff));
1700444574
1700444575
list.add(new Employee(1005,“马六”,Position.Staff));
1700444576
1700444577
//按照id排序,也就是按照资历深浅排序
1700444578
1700444579
Collections.sort(list);
1700444580
1700444581
for(Employee e:list){
1700444582
1700444583
System.out.println(e);
1700444584
1700444585
}
1700444586
1700444587
}
1700444588
1700444589
在收集数据时按照职位高低来收集,这也是“为领导服务”理念的体现嘛,先登记领导,然后是小领导,最后是普通员工。排序后的输出如下:
1700444590
1700444591
Employee@1037c71[id=1001,name=张三,position=Boss]
1700444592
1700444593
Employee@b1c5fa[id=1002,name=李四,position=Staff]
1700444594
1700444595
Employee@f84386[id=1003,name=王五,position=Manager]
1700444596
1700444597
Employee@15d56d5[id=1005,name=马六,position=Staff]
1700444598
1700444599
Employee@efd552[id=1006,name=赵七,position=Manager]
1700444600
1700444601
是按照id号升序排列的,结果正确,但是,有时候我们希望按照职位来排序,那怎么做呢?此时,重构Employee类已经不合适了,Employee已经是一个稳定类,为了一个排序功能修改它不是一个好办法,那有什么更好的解决办法吗?
1700444602
1700444603
有办法,看Collections.sort方法,它有一个重载方法Collections.sort(List<T>list, Comparator<?super T>c),可以接受一个Comparator实现类,这下就好办了,代码如下:
1700444604
1700444605
class PositionComparator implements Comparator<Employee>{
1700444606
1700444607
@Override
1700444608
1700444609
public int compare(Employee o1,Employee o2){
1700444610
1700444611
//按照职位降序排列
1700444612
1700444613
return o1.getPosition().compareTo(o2.getPosition());
1700444614
1700444615
}
1700444616
1700444617
}
1700444618
1700444619
创建了一个职位排序法,依据职位的高低进行降序排列,然后只要把Collections.sort(list)修改为Collections.sort(list, new PositionComparator())即可实现按职位排序的要求。
[
上一页 ]
[ :1.70044457e+09 ]
[
下一页 ]