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
浙公网安备 33010602011771号