java 中RandomAccess接口源码分析

RandomAccess是一个接口,位于java.util包中。
这个接口的作用注释写的很清楚了:
/**
* Marker interface used by <tt>List</tt> implementations to indicate that
* they support fast (generally constant time) random access. The primary
* purpose of this interface is to allow generic algorithms to alter their
* behavior to provide good performance when applied to either random or
* sequential access lists.
* List实现所使用的标记接口,用来表明实现了这些接口的list支持快速(通常是常数时间)随机访问。
* 这个接口的主要目的是允许一般的算法更改它们的行为,以便在随机或者顺序存取列表时能提供更好的性能。
* <p>The best algorithms for manipulating random access lists (such as
* <tt>ArrayList</tt>) can produce quadratic behavior when applied to
* sequential access lists (such as <tt>LinkedList</tt>). Generic list
* algorithms are encouraged to check whether the given list is an
* <tt>instanceof</tt> this interface before applying an algorithm that would
* provide poor performance if it were applied to a sequential access list,
* and to alter their behavior if necessary to guarantee acceptable
* performance.
* 操作随机访问列表(如ArrayList)的最佳算法在应用于顺序存取列表时,有可能产生二次项行为。
* 泛型算法列表鼓励在将某个算法应用于顺序存取列表可能导致差的性能之前,先检查给定的列表是否是这个接口的一个实例,
* 并在需要时去改变这些算法的行为以保证性能。
* <p>It is recognized that the distinction between random and sequential
* access is often fuzzy. For example, some <tt>List</tt> implementations
* provide asymptotically linear access times if they get huge, but constant
* access times in practice. Such a <tt>List</tt> implementation
* should generally implement this interface. As a rule of thumb, a
* <tt>List</tt> implementation should implement this interface if,
* for typical instances of the class, this loop:
* 随机访问和顺序存取之间的界限通常是模糊的。例如,一些List实现在变得很大时会导致渐进的非线性访问时间,但实际上是常量访问时间。
* 这样的List实现通常都应该实现该接口。
* 一般来说,某个List实现如果(对某些典型的类的实例来说)满足下面的条件,就应该实现这个接口:循环
* <pre>
* for (int i=0, n=list.size(); i < n; i++)
* list.get(i);
* </pre>
* runs faster than this loop:
* 比下面的循环运行速度快。
* <pre>
* for (Iterator i=list.iterator(); i.hasNext(); )
* i.next();
* </pre>
*
* <p>This interface is a member of the
* <a href="{@docRoot}/../technotes/guides/collections/index.html" rel="external nofollow" >
* Java Collections Framework</a>.
* 这个接口是Java集合框架的一员。
* @since 1.4
*/
public interface RandomAccess {
}
RandomAccess是一个空接口,而空接口的作用一般是起到一个标识的作用。
通俗点讲,就是判断一个list是否实现了RandomAcess接口,如果实现了,采用下面所示的简单的for循环进行访问速度比较快:
for (int i=0, n=list.size(); i < n; i++) list.get(i);
如果未实现RandomAcess接口,则采用下面的iterator循环访问速度比较快。
for (Iterator i=list.iterator(); i.hasNext(); ) i.next();
判断使用instanceof,即
if (list instanceof RandomAccess)
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# 中RandomAccess接口源码
# 中RandomAccess接口源码理解
# Java中的Random()函数及两种构造方法
# Java使用Random类生成随机数示例
# Java使用Math.random()结合蒙特卡洛方法计算pi值示例
# 关于java.util.Random的实现原理详解
# Java中Random简介_动力节点Java学院整理
# 快速了解JAVA中的Random()函数
# 是一个
# 实现了
# 应用于
# 较快
# 访问速度
# 有可能
# 并在
# 希望能
# 很清楚
# 所示
# 速度快
# 谢谢大家
# 主要目的是
# 包中
# 以保证
# applied
# performance
# sequential
# lists
# good
相关文章:
建站之星代理如何优化在线客服效率?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
Swift中switch语句区间和元组模式匹配
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
如何快速搭建支持数据库操作的智能建站平台?
C#如何使用XPathNavigator高效查询XML
如何通过FTP服务器快速搭建网站?
常州企业网站制作公司,全国继续教育网怎么登录?
高防服务器租用首荐平台,企业级优惠套餐快速部署
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
常州自助建站工具推荐:低成本搭建与模板选择技巧
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
孙琪峥织梦建站教程如何优化数据库安全?
如何在西部数码注册域名并快速搭建网站?
一键网站制作软件,义乌购一件代发流程?
定制建站方案优化指南:企业官网开发与建站费用解析
如何快速配置高效服务器建站软件?
如何快速搭建虚拟主机网站?新手必看指南
导航网站建站方案与优化指南:一站式高效搭建技巧解析
手机网站制作与建设方案,手机网站如何建设?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
建站之星CMS五站合一模板配置与SEO优化指南
定制建站模板如何实现SEO优化与智能系统配置?18字教程
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
建站之星导航菜单设置与功能模块配置全攻略
淘宝制作网站有哪些,淘宝网官网主页?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何获取免费开源的自助建站系统源码?
设计网站制作公司有哪些,制作网页教程?
建站之星微信建站一键生成小程序+多端营销系统
网站制作企业,网站的banner和导航栏是指什么?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
存储型VPS适合搭建中小型网站吗?
定制建站流程解析:需求评估与SEO优化功能开发指南
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
香港服务器如何优化才能显著提升网站加载速度?
建站主机如何安装配置?新手必看操作指南
C#怎么创建控制台应用 C# Console App项目创建方法
宝塔建站后网页无法访问如何解决?
如何在建站宝盒中设置产品搜索功能?
如何快速搭建高效服务器建站系统?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
动图在线制作网站有哪些,滑动动图图集怎么做?
Python如何创建带属性的XML节点
公司网站的制作公司,企业网站制作基本流程有哪些?
如何在Windows虚拟主机上快速搭建网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。