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
网友评论