java集合Collections中ArrayList和LinkedList区别

ArrayList是线性表:

基于数组Arrays(内存中的地址是连续)实现。

查询效率高(利用下标定位,时间复杂度为O(1))。

增删效率(O(n),插入和删除需要移动数据)低。

可能浪费内存(在存储之前,需要申请一块连续的内存空间,并且在编译的时就必须确定好空间大小)。

LinkedList是链表:

基于链表(链表内存地址是散列、不连续的)结构实现。

查询相对慢些(不能随机查找,必须从第一个开始遍历,查找效率低,链表定位元素时间复杂度O(n))。

增删效率(O(1),因为有next指针指向其下一个节点,通过改变指针的指向就可以增加删除元素)高。

不浪费内存(可以使用内存中细小的不连续空间(大于node节点的大小),在需要空间的时才创建空间)。

在日常开发时,用集合经常都用ArrayList,虽然ArrayList满足大部分业务场景,但是对于需要频繁增删的业务还是要及时想到要用LinkedList。

参考链接:https://blog.csdn.net/yongwan5637/article/details/88353348

posted @ 2021-11-29 22:14  对月当歌  阅读(74)  评论(0)    收藏  举报