【LSP】Java基础系列-RandomAccess

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2020-10-10

Random是随机的意思,Access是访问的意思,合起来就是随机访问的意思。


RandomAccess接口是一个标记接口,用以标记实现的List集合具备快速随机访问的能力。

那么什么是随机访问的能力呢?其实很简单,随机访问就是随机的访问List中的任何一个元素。

所有的List实现都支持随机访问的,只是基于基本结构的不同,实现的速度不同罢了,这里的快速随机访问,那么就不是所有List集合都支持了。

ArrayList基于数组实现,天然带下标,可以实现常量级的随机访问,复杂度为O(1)
LinkedList基于链表实现,随机访问需要依靠遍历实现,复杂度为O(n)
二者的差距显而易见,所以ArrayList具备快速随机访问功能,而LinkedList没有。我们也能看到:

ArrayList实现了RandomAccess接口,而LinkedList没有。

那么到底这个接口有什么用呢?

当一个List拥有快速访问功能时,其遍历方法采用for循环最快速。而没有快速访问功能的List,遍历的时候采用Iterator迭代器最快速。

当我们不明确获取到的是Arraylist,还是LinkedList的时候,我们可以通过RandomAccess来判断其是否支持快速随机访问,若支持则采用for循环遍历,否则采用迭代器遍历,如下方式:

执行结果:

那么都有哪些类实现了这个接口呢?

ArrayList
Vector
CopyOnWriteArrayList
RandomAccessSubList
UnmodifiableArrayList

成为第一个回答人

评论

登录后才可发表内容
  • 主题

    124

  • 帖子

    0

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0652s Mem:2038Kb