Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。
底层原理:ArrayList底层原理是动态数组,而LinkedList底层原理是链表
那么区别可从底层实现原理分析:
- 不同点:ArrayList查找元素,修改元素比LinkedList快,而LinkedList插入和删除元素比LinkedList快。LinkedList一般比ArrayList更占内存,因为LinkedList的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。
- 相同点:二者都实现了List接口,且不想数组那样一经定义长度就固定了。