打字猴:1.70044464e+09
1700444640
1700444641 public int compareTo(Employee o){
1700444642
1700444643 return new CompareToBuilder()
1700444644
1700444645 .append(o.id, id).toComparison();
1700444646
1700444647 }
1700444648
1700444649 两个参数调换了一下位置,也就是compareTo的返回值与之前正好相反,再使用Collections.sort进行排序,顺序也就相反了,这样就实现了倒序。
1700444650
1700444651 第三个问题:在Java中,为什么要有两个排序接口呢?
1700444652
1700444653 很多同学都提出了这个问题,其实也好回答,实现了Comparable接口的类表明自身是可比较的,有了比较才能进行排序;而Comparator接口是一个工具类接口,它的名字(比较器)也已经表明了它的作用:用作比较,它与原有类的逻辑没有关系,只是实现两个类的比较逻辑,从这方面来说,一个类可以有很多的比较器,只要有业务需求就可以产生比较器,有比较器就可以产生N多种排序,而Comparable接口的排序只能说是实现类的默认排序算法,一个类稳定、成熟后其compareTo方法基本不会改变,也就是说一个类只能有一个固定的、由compareTo方法提供的默认排序算法。
1700444654
1700444655 注意 Comparable接口可以作为实现类的默认排序法,Comparator接口则是一个类的扩展排序工具。
1700444656
1700444657
1700444658
1700444659
1700444660 编写高质量代码:改善Java程序的151个建议 [:1700438145]
1700444661 编写高质量代码:改善Java程序的151个建议 建议74:不推荐使用binarySearch对列表进行检索
1700444662
1700444663 对一个列表进行检索时,我们使用得最多的是indexOf方法,它简单、好用,而且也不会出错,虽然它只能检索到第一个符合条件的值,但是我们可以生成子列表后再检索,这样也就可以查找出所有符合条件的值了。
1700444664
1700444665 Collections工具类也提供一个检索方法:binarySearch,这个是干什么的?该方法也是对一个列表进行检索的,可查找出指定值的索引值,但是在使用这个方法时就有一些注意事项了,我们看如下代码:
1700444666
1700444667 public static void main(String[]args){
1700444668
1700444669 List<String>cities=new ArrayList<String>();
1700444670
1700444671 cities.add(“上海”);
1700444672
1700444673 cities.add(“广州”);
1700444674
1700444675 cities.add(“广州”);
1700444676
1700444677 cities.add(“北京”);
1700444678
1700444679 cities.add(“天津”);
1700444680
1700444681 //indexOf方法取得索引值
1700444682
1700444683 int index1=cities.indexOf(“广州”);
1700444684
1700444685 //binarySearch查找到索引值
1700444686
1700444687 int index2=Collections.binarySearch(cities,“广州”);
1700444688
1700444689 System.out.println(“索引值(indexOf):”+index1);
[ 上一页 ]  [ :1.70044464e+09 ]  [ 下一页 ]