嗯,我们知道RandomAccess
是一个标记界面,文档说:
List实现使用的标记接口,表示它们支持快速(通常是恒定时间)随机访问。此接口的主要目的是允许通用算法更改其行为,以便在应用于随机或顺序访问列表时提供良好的性能。
因此,对我来说,ArrayList
实现RandomAccess
接口是完全合理的,因为内部元素存储在一个数组中,可以随机访问。但是,如果您将看到ArrayDeque
的内部实现,它也将元素存储在一个数组中,但它没有实现RandomAccess
,那么它是否有意或者是某些明确的原因我是不知道?
答案 0 :(得分:5)
RandomAccess
实施使用 List
表示它们支持快速随机访问。
ArrayDeque
不是List
并且没有任何随机访问方法(没有基于索引的add
,get
,{{ 1}}或remove
方法),所以让它set
是没有意义的。
底层结构可能是随机访问,但该类不允许随机访问。