集合基础2:List系列集合(ArrayList,LinkedList),集合的并发修改异常问题
List系列集合特点,特有API



List集合遍历方式总结
因为List集合具有索引的原因,所以他在Collection接口的三种遍历方法的基础上,还可以利用索引进行for循环

Arraylist集合底层原理:

ArrayList的优点
ArrayList底层以数组实现,是一种随机访问模式,再加上它实现了RandomAccess接口,因此查找也就是get的时候非常快。
ArrayList在顺序添加一个元素的时候非常方便,只是往数组里面添加了一个元素而已。
根据下标遍历元素,效率高。
根据下标访问元素,效率高。
可以自动扩容,默认为每次扩容为原来的1.5倍。
ArrayList的缺点
插入和删除元素的效率不高。
根据元素下标查找元素需要遍历整个元素数组,效率不高
线程不安全
LinkerList
JDK1.6后新增,push()可替代addFirst(),pop()可替代removeFirst(),offerLast()可替代addLast()

LinkedList不仅实现了list接口,也实现了Deque接口,Deque接口提供了操作栈和队列的方法,所以LinkedList可以完成队列结构和栈结构,如下:

缺点:添加慢,因为需要遍历找到到最后一个指向为null的节点
优点:插入和删除快 因为可以直接改变下一个节点的指向
两种实现类的对比:

集合的并发修改异常问题


如果在遍历时删除元素,会出现跳格的情况,会遍历漏





浙公网安备 33010602011771号