打字猴:1.70044457e+09
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 ]  [ 下一页 ]