RandomAccess
public interface RandomAccess
List 实现使用的标记接口表明它们支持快速(通常是恒定时间)随机访问。此接口的主要目的是允许通用算法在应用于随机或顺序访问列表时改变其行为以提供良好的性能。
用于操作随机访问列表(例如 ArrayList)的最佳算法在应用于顺序访问列表(例如 LinkedList)时会产生二次行为。鼓励通用列表算法在应用算法之前检查给定列表是否是此接口的实例,如果将其应用于顺序访问列表会提供较差的性能,并在必要时更改它们的行为以保证可接受的性能。
众所周知,随机访问和顺序访问之间的区别通常是模糊的。例如,如果某些 List 实现变得很大,则提供渐近线性访问时间,但在实践中访问时间是恒定的。这样的 List 实现一般应该实现这个接口。根据经验,如果对于类的典型实例,如果出现以下循环,则 List 实现应该实现此接口:
for (int i=0, n=list.size(); i < n; i++)
list.get(i);
运行速度比这个循环快:
for (Iterator i=list.iterator(); i.hasNext(); )
i.next();
此接口是 Java 集合框架的成员。