1. ArrayList继承AbstractList,LinkedList继承AbstractSequentialList,AbstractSequentialList继承AbstractList,查看代码AbstractSequentialList没有新增方法,那么Arraylist和LinkedList都继承AbstractList,可以把他们当成有相同的特性。
2. 接下来看他们实现的接口,相同的Cloneable, Serializable看一下有哪些方法即可,重点看不同的,Arraylist实现了RandomAccess(其实里面啥方法也没有,应该说是只是一个标志),LinkedList实现了Deque。在看每一个接口的说明,RandomAccess说明可以用get方法访问,性能很快,你如果是一个LinkedList用get你就会发现慢的吓人;Deque说明实现了双向队列,在查看Dueue的各个方法了解他所有的特性。
3.
a。ArrayList是用数组实现的,需要初始化容量,容量不够的时候会扩容,扩容会把数组copy一遍比较耗费性能,大数据量的时应该尽量避免。
b。ArrayList可以用get方法随机访问,性能还能很快,LinkedList用get方法会比较慢,大数据量应该避免。
c。LinkedList实现了双向队列,可以非常方便的在头尾增加和删除数据。
d。一边遍历一边修改的时候需要使用listIterator,不要傻傻的搞2个List。
本文对比了ArrayList与LinkedList两种数据结构的特点。ArrayList通过数组实现,适合随机访问元素;而LinkedList采用链表实现,支持高效的双向队列操作。文章还讨论了它们在不同场景下的性能表现。
1844

被折叠的 条评论
为什么被折叠?



