java 中RandomAccess接口源码分析

网友投稿 237 2023-05-11


java 中RandomAccess接口源码分析

java 中RandomAccess接口源码分析

RandomAccess是一个接口,位于java.util包中。

这个接口的作用注释写的很清楚了:

/**

* Marker interface used by List 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 performanXjxqrce when applied to either random or

* sequential access lists.

* List实现所使用的标记接口,用来表明实现了这些接口的list支持快速(通常是常数时间)随机访问。

* 这个接口的主要目的是允许一般的算法更改它们的行为,以便在随机或者顺序存取列表时能提供更好的性能。

*

The best algorithms for manipulating random access lists (such as

* ArrayList) can produce quadratic behavior when applied to

* sequential access lists (such as LinkedList). Generic list

* algorithms are encouraged to check whether the given list is an

* instanceof this interface before applying an algorithm that would

* provide poor performance if it were applied to a sequential access list,

* and to alter theirhttp:// behavior if necessary to guarantee acceptable

* performance.

* 操作随机访问列表(如ArrayList)的最佳算法在应用于顺序存取列表时,有可能产生二次项行为。

* 泛型算法列表鼓励在将某个算法应用于顺序存取列表可能导致差的性能之前,先检查给定的列表是否是这个接口的一个实例,

* 并在需要时去改变这些算法的行为以保证性能。

*

It is recognized that the distinction between random and sequential

* access is often fuzzy. For example, some List implementations

* provide asymptotically linhttp://ear access times if they get huge, but constant

* access times in practice. Such a List implementation

* should generally implement this interface. As a rule of thumb, a

* List implementation should implement this interface if,

* for typical instances of the class, this loop:

* 随机访问和顺序存取之间的界限通常是模糊的。例如,一些List实现在变得很大时会导致渐进的非线性访问时间,但实际上是常量访问时间。

* 这样的List实现通常都应该实现该接口。

* 一般来说,某个List实现如果(对某些典型的类的实例来说)满足下面的条件,就应该实现这个接口:循环

*

* for (int i=0, n=list.size(); i < n; i++)

* list.get(i);

*

* runs faster than this loop:

* 比下面的循环运行速度快。

*

* for (Iterator i=list.iterator(); i.hasNext(); )

* i.next();

*

*

*

This interface is a member of the

*

* Java Collections Framework.

* 这个接口是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)

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
下一篇:java Iterator接口和LIstIterator接口分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~