共同点:两个都实现了Collection以及List接口;是具体的实现类,用来存储多个元素的集合;
区别:
数据结构:
ArrayList底层是紧密数据结构(动态数组);
LinkedList底层是跳转数据结构(链表);
内存大小:
linkedList比ArrayList更占内存,因为linkedList每一个节点都存储两个引用,一个指向前一个元素,一个指向下一个元素;
操作复杂度:
linkedList基于链表进行操作,插入更快。只需要更新对应位置前后节点中的引用地址即可;
ArrayList基于数组的下标进行操作,查询更快;但是增删操作比较慢,原因:当数组新增数据的时候,如果是最后一个位置添加,相对简单;如果是指定位置添加数据,且数组的数据量较大时,添加一个数据,需要将位置后边的所有的数据,进行移位;删除是同样的操作;
两者的使用场景:
需要经常读取数据的时候,建议使用ArrayList;
需要经常更新数据的时候,建议使用linkedList;