好吧,我们知道 RandomAccess
是标记接口,文档中说:
List实现使用的标记接口,指示它们支持快速(通常为恒定时间)随机访问。该接口的主要目的是允许通用算法更改其行为,以便在应用于随机访问或顺序访问列表时提供良好的性能。
因此,对我来说,由于内部元素存储在数组中(可以随机访问),因此ArrayList
实现RandomAccess
接口是完全有意义的。但是,如果您将看到 ArrayDeque
的内部实现,该实现也将元素存储在数组中,但是它没有实现RandomAccess
,这是有意还是出于某些我不知道的明确原因?
最佳答案
RandomAccess
实现使用List
来指示它们支持快速随机访问。ArrayDeque
不是List
,并且没有任何随机访问方法(没有基于索引的add
,get
,remove
或set
方法),因此将其设置为RandomAccess
毫无意义。
底层结构可能是随机访问,但是该类不允许随机访问。