为什么ArrayList RandomAccess而不是ArrayDeque?

时间:2018-01-25 19:52:53

标签: java arrays arraylist deque

嗯,我们知道RandomAccess是一个标记界面,文档说:

  

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

因此,对我来说,ArrayList实现RandomAccess接口是完全合理的,因为内部元素存储在一个数组中,可以随机访问。但是,如果您将看到ArrayDeque的内部实现,它也将元素存储在一个数组中,但它没有实现RandomAccess,那么它是否有意或者是某些明确的原因我是不知道

1 个答案:

答案 0 :(得分:5)

RandomAccess实施使用

List表示它们支持快速随机访问。

ArrayDeque不是List并且没有任何随机访问方法(没有基于索引的addget,{{ 1}}或remove方法),所以让它set是没有意义的。

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