为什么ArrayList实现RandomAccess接口?

2022-09-01 12:49:26

ArrayList实现接口。 接口没有方法。当我检查它没有实现接口。RandomAccessRandomAccessLinkedListRandomAccess

那么,在 的情况下,实现它的意义何在?ArrayList


答案 1

没有方法的接口在 Java 中称为标记接口。

根据 RandomAccess 的 JavaDoc:

List 实现使用的标记接口,用于指示
它们支持快速(通常是恒定时间)随机访问。

有关更多信息,请查看两个 JavaDoc 页面。

http://docs.oracle.com/javase/6/docs/api/java/util/RandomAccess.html

http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html


答案 2

RandomAccess 接口没有方法

这称为标记接口,是一种称为标记接口模式的设计模式

当我检查LinkedList时,它没有实现RandomAccess接口。那么,在ArrayList的情况下,实现它有什么意义呢?

因为 a 中的随机访问是 O(n),而 它是 O(1) 中的 。LinkedListArrayList

它在文档中说明:

用于操作随机访问列表(如 ArrayList)的最佳算法在应用于顺序访问列表(如 LinkedList)时可以生成二次行为