RandomAccess 是一个标记接口,标识实现该接口的类支持快速随机访问。
一、随机访问和串行访问
举个例子:在 Java 中,有 ArrayList 和 LinkedList 两种数据类型。
-
ArrayList 是基于数组实现的,可以通过数组下表灵活的访问列表中的任意元素。像 ArrayList 这种设计,我们就称之为随机访问。
-
LinkedList 是基于 next 引用实现的,只能通过串行的方式,从头到尾逐个查找目标元素。像 LinkedList 这种设计,我们称之为串行访问。
二、快速随机访问
根据 RandomAccess 的注释理解,如果“代码一”的执行速度比“代码二”快,则应该实现 RandomAccess 接口。
换句话说,如果集合类(List)实现了 RandomAccess 接口,则采用“代码一”的方式能够获得更高的执行效率。这也是为什么阿里巴巴的代码规约中推荐使用“代码一”的方式进行集合遍历。
代码一:
for (int i=0, n=list.size(