打字猴:1.70044481e+09
1700444810
1700444811 使用binarySearch首先要考虑排序问题,这是我们编码人员经常容易忘记的,而且在测试期间还没发现问题(因为测试时“制造”的数据都很有规律),等到投入生产系统后才发现查找的数据不准确,又是一个大Bug产生了,从这点来看,indexOf要比binarySearch简单得多。
1700444812
1700444813 当然,使用binarySearch的二分法查找比indexOf的遍历算法性能上高很多,特别是在大数据集而且目标值又接近尾部时,binarySearch方法与indexOf相比,性能上会提升几十倍,因此在从性能的角度考虑时可以选择binarySearch。
1700444814
1700444815 注意 从性能方面考虑,binarySearch是最好的选择。
1700444816
1700444817
1700444818
1700444819
1700444820 编写高质量代码:改善Java程序的151个建议 [:1700438146]
1700444821 编写高质量代码:改善Java程序的151个建议 建议75:集合中的元素必须做到compareTo和equals同步
1700444822
1700444823 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法有关系吗?有关系,在compareTo的返回为0时,它表示的是进行比较的两个元素是相等的。equals是不是也应该对此作出相应的动作呢?我们看如下代码。
1700444824
1700444825 class City implements Comparable<City>{
1700444826
1700444827 //城市编码
1700444828
1700444829 private String code;
1700444830
1700444831 //城市名称
1700444832
1700444833 private String name;
1700444834
1700444835 public City(String_code, String_name){
1700444836
1700444837 code=_code;
1700444838
1700444839 name=_name;
1700444840
1700444841 }
1700444842
1700444843 /*code、name的getter/setter方法省略*/
1700444844
1700444845 @Override
1700444846
1700444847 public int compareTo(City o){
1700444848
1700444849 //按照城市名称排序
1700444850
1700444851 return new CompareToBuilder()
1700444852
1700444853 .append(name, o.name)
1700444854
1700444855 .toComparison();
1700444856
1700444857 }
1700444858
1700444859 @Override
[ 上一页 ]  [ :1.70044481e+09 ]  [ 下一页 ]