1、在List集合中,通过查看源码,就会发现ArrayList实现RandomAccess接口,Linked并没有实现RandomAccess接口。
ArrayList:源码

Linkedlist:源码

2、什么是RandomAccess,有什么作用呢:
RandomAccess:源码

RandomAccess什么都没有,RandomAccess接口是一个标志接口(Marker)

由此可以看出,判断list是否实现RandomAccess接口来实行indexedBinarySerach(list,key)或iteratorBinarySerach(list,key)方法。ps(instanceof其作用是用来判断某对象是否为某个类或接口类型)
通过查看源代码,发现实现RandomAccess接口的List集合采用一般的for循环遍历(indexedBinarySerach),而未实现这接口则采用迭代器(iteratorBinarySerach)。
另外:实验可以发现:ArrayList用for循环遍历比iterator迭代器遍历快,LinkedList用iterator迭代器遍历比for循环遍历快
所以说,考虑到List集合的不同子类采用不同的遍历方式,能够提高性能!
浙公网安备 33010602011771号