写点什么

ArrayList vs LinkedList

用户头像
ltc
关注
发布于: 2021 年 05 月 20 日

ArrayList 和 LinkedList 各自的适用场景

当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用 ArrayList 会有更好的性能;当操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用 LinkedList 了。(对于随机访问 get 和 set,ArrayList 优于 LinkedList,因为 LinkedList 要移动指针。对于新增和删除操作 add 和 remove,LinedList 比较占优势,因为 ArrayList 要移动数据。)

ArrayList 的容量

ArrayList 可以进行扩容(针对 JDK1.8  数组扩容后的容量是扩容前的 1.5 倍 newCap = oldCap + oldCap >> 1)。

ArrayList 源码中最大的数组容量是 Integer.MAX_VALUE-8。

最大还是能支持到 Integer.MAX_VALUE(当 Integer.MAX_VALUE-8 依旧无法满足需求时)。

ArrayList 添加元素

只要 ArrayList 的当前容足够大,add()操作向数组的尾部的效率非常高的,当向数组指定位置添加数据时,会进行大量的数组移动复制操作。而数组复制时,最终将调用 System.arraycopy()方法。

用户头像

ltc

关注

ltc 2019.07.04 加入

还未添加个人简介

评论

发布
暂无评论
ArrayList vs LinkedList