好吧,我们知道 RandomAccess 是标记接口,文档中说:

List实现使用的标记接口,指示它们支持快速(通常为恒定时间)随机访问。该接口的主要目的是允许通用算法更改其行为,以便在应用于随机访问或顺序访问列表时提供良好的性能。

因此,对我来说,由于内部元素存储在数组中(可以随机访问),因此ArrayList实现RandomAccess接口是完全有意义的。但是,如果您将看到 ArrayDeque 的内部实现,该实现也将元素存储在数组中,但是它没有实现RandomAccess,这是有意还是出于某些我不知道的明确原因?

最佳答案

RandomAccess实现使用List来指示它们支持快速随机访问。
ArrayDeque不是List,并且没有任何随机访问方法(没有基于索引的addgetremoveset方法),因此将其设置为RandomAccess毫无意义。

底层结构可能是随机访问,但是该类不允许随机访问。

09-17 11:56