打字猴:1.70044471e+09
1700444710
1700444711 else
1700444712
1700444713 //元素数量大于5000的顺序存取列表
1700444714
1700444715 return Collections.iteratorBinarySearch(list, key);
1700444716
1700444717 }
1700444718
1700444719 ArrayList实现了RandomAccess接口,是一个顺序存取列表,使用了indexdBinarySearch方法,代码如下:
1700444720
1700444721 private static<T>int indexedBinarySearch(List<?extends Comparable<?super T>>
1700444722
1700444723 list, T key){
1700444724
1700444725 //默认上界
1700444726
1700444727 int low=0;
1700444728
1700444729 //默认下界
1700444730
1700444731 int high=list.size()-1;
1700444732
1700444733 while(low<=high){
1700444734
1700444735 //中间索引,无符号右移1位
1700444736
1700444737 int mid=(low+high)>>>1;
1700444738
1700444739 //中间值
1700444740
1700444741 Comparable<?super T>midVal=list.get(mid);
1700444742
1700444743 //比较中间值
1700444744
1700444745 int cmp=midVal.compareTo(key);
1700444746
1700444747 //重置上界和下界
1700444748
1700444749 if(cmp<0)
1700444750
1700444751 low=mid+1;
1700444752
1700444753 else if(cmp>0)
1700444754
1700444755 high=mid-1;
1700444756
1700444757 else
1700444758
1700444759 //找到元素
[ 上一页 ]  [ :1.70044471e+09 ]  [ 下一页 ]