Java Collections Framework 之 RandomAccess接口
2024-10-22 07:31:32
在研究Collections类的排序算法时候,看到这样的代码 :
public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key){
if(list instanceof RandomAccess || list.size()<BINARYSEARCH_THRESHOLD)
return Collections.indexedBinarySearch(list, key);
else
return Collections.iteratorBinarySearch(list, key);
}
BINARYSEARCH_THRESHOLD的值是5000. 代码的意思是list的大小少于5000或者list实现了RandomAccess, 就采用index的方式遍历, 反之就采用iterator的方式遍历. 这里注意到:
list instanceof RandomAccess
查了一下JDK源码和文档, 发现RandomAccess是一个空的接口, 空接口一般只是作为一个标识, 如Serializable接口. JDK文档说明RandomAccess是一个标记接口(Marker interface), 被用于List接口的实现类, 表明这个实现类支持快速随机访问功能(如ArrayList). 当程序在遍历这中List的实现类时, 可以根据这个标识来选择更高效的遍历方式, 仅此而已. 总结: RandomAccess接口作为标记接口(Marker interface), 表明这个List实现类是否支持随机访问功能, 比如ArrayList就实现了RandomAccess接口而LinkedList类就没有实现RandomAccess接口.
最新文章
- Django--全文检索功能
- jquery trigger 触发事件小计 -- 关于a标签
- 可重入锁 &; 自旋锁 &; Java里的AtomicReference和CAS操作 &; Linux mutex不可重入
- VIm vi 使用 汇总
- PCB走线角度选择 — PCB Layout 跳坑指南
- Xcode的后缀字母的意思是
- 几种更新(Update语句)查询的方法【转】
- CSS 负边距自适应布局
- hibernate配置文件详细解释
- 【转】spin_lock &; mutex_lock的区别? .
- android 利用Bitmap获取圆角矩形、圆形图片
- 转-——推荐几个web中常用的一些js图表插件 - zccst
- hadoop出现ava.lang.ClassNotFoundException: org.codehaus.jackson.map.JsonMappingException
- WINDOWS动态链接库--MFC规则动态链接库
- AR入门系列-05-Vuforia识别目标视频播放
- protobuf 系列 ---------下载、编译与使用
- iOS 隐藏导航条分割线
- aliyun添加数据盘parted方式分区格式化和lvm挂载及数据盘的扩容
- webpack 的 入口(Entry)、输出(Output)
- python 算法面试题
热门文章
- 项目删除又重新clone,未重新进入项目目录或重启terminal,导致git命令或其他命令报 目录不存在的错误
- linux rhel unix centos FreeBSD 常用命令
- Jmeter(二)参数化
- Spring第五弹—–配置Spring管理的bean的作用域和生命周期
- PAT 1037 Magic Coupon[dp]
- CentOS忘记用户名或者密码解决办法
- 项目总结之HashMap问题
- qqwry.dat输出乱码问题及maven打包后资源文件大小不一致的问题
- Eclipse 导入Maven 项目报错
- Redis学习笔记之Redis单机,伪集群,Sentinel主从复制的安装和配置