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
相关文章:
佛山网站制作系统,佛山企业变更地址网上办理步骤?
建站上市公司网站建设方案与SEO优化服务定制指南
建站之星安装后如何配置SEO及设计样式?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
在线制作视频网站免费,都有哪些好的动漫网站?
如何快速查询网站的真实建站时间?
网站企业制作流程,用什么语言做企业网站比较好?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
如何通过IIS搭建网站并配置访问权限?
如何配置支付宝与微信支付功能?
PHP 500报错的快速解决方法
海南网站制作公司有哪些,海口网是哪家的?
网站app免费制作软件,能免费看各大网站视频的手机app?
制作网站的基本流程,设计网站的软件是什么?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
如何快速使用云服务器搭建个人网站?
网站网页制作专业公司,怎样制作自己的网页?
如何用已有域名快速搭建网站?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
如何撰写建站申请书?关键要点有哪些?
建站主机选择指南:服务器配置与SEO优化实战技巧
家具网站制作软件,家具厂怎么跑业务?
如何用y主机助手快速搭建网站?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
建站ABC备案流程中有哪些关键注意事项?
,sp开头的版面叫什么?
b2c电商网站制作流程,b2c水平综合的电商平台?
宝塔建站后网页无法访问如何解决?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
西安大型网站制作公司,西安招聘网站最好的是哪个?
建站之星Pro快速搭建教程:模板选择与功能配置指南
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
如何用美橙互联一键搭建多站合一网站?
建站之星各版本价格是多少?
如何在IIS中新建站点并配置端口与物理路径?
金*站制作公司有哪些,金华教育集团官网?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
如何注册花生壳免费域名并搭建个人网站?
全景视频制作网站有哪些,全景图怎么做成网页?
如何高效生成建站之星成品网站源码?
建站主机数据库如何配置才能提升网站性能?
*请认真填写需求信息,我们会在24小时内与您取得联系。