由list instanceof RandomAccess引发的

2020-06-16  本文已影响0人  温不胜_kangle

1、在调用List.partition()方法时,会有如下操作

list instanceof RandomAccess ?new Lists.RandomAccessPartition(list, size) :new Lists.Partition(list, size)

2、RandomAccess标记快速随机访问的接口

3、List的所有子类均支持随机访问,但只有部分支持快速随机访问;

ArrayList基于数组实现,天然带下标,可以实现常量级的随机访问,复杂度为O(1)

LinkedList基于链表实现,随机访问需要依靠遍历实现,复杂度为O(n)

所以ArrayList具备快速随机访问功能,而LinkedList没有

4、知道3,是为了得出:当一个List拥有快速访问功能时,其遍历方法采用for循环最快速。而没有快速访问功能的List,遍历的时候采用Iterator迭代器最快速。

5、对5万个元素的操作时间比较

6、实现快速随机访问的接口有:

ArrayList、Vector、CopyOnWriteArrayList、RandomAccessSubList、UnmodifiableArrayList

上一篇下一篇

猜你喜欢

热点阅读