String[]数组,ArrayList 和 LinkedList的区别




String[]数组的大小是固定的数据结构,ArrayList的大小是动态增加的数据结构,LinkedList是基于链表的数据结构 String[]数组:最高效;但是其容量固定且无法动态改变; ArrayList:容量可动态增长;但牺牲效率;
ArrayList & LinkedList
1. 存储方式
ArrayList采用数组形式保存对象,将对象放在连续的位置。插入删除时需要重排数组中的所有数据。
LinkedList 将对象存放在独立的空间中,每个空间还保存着下一个连接的索引。
2. 对于插入(add)删除(remove)来说,LinkedList优于ArrayList
ArrayList插入删除时需要将列表中剩余的元素都将移动,更新索引。
LinkedList不需要改变数组的大小,也不需要在数组装满的时候要将所有的数据重新装入一个新的数组,这是ArrayList最坏的一种情况,时间复杂度是O(n),而LinkedList中插入或删除的时间复杂度仅为O(1)。
3. 对于随机访问get和set,,ArrayList优于LinkedList
【String[]数组,ArrayList 和 LinkedList的区别】ArrayList获取数据的时间复杂度是O(1),ArrayList的每个索引位置就是实际位置
LinkedList需要从从第一个索引开始查询,过程中需要移动指针
4. 查找操作indexOf,lastIndexOf,contains等,两者差不多。
5. 需要内存大小来说,LinkedList更大
ArrayList的每个索引的位置是实际的数据,只是在list列表的结尾预留一定的容量空间
LinkedList中的每个节点中存储的是实际的数据和前后节点的位置。

    推荐阅读