java中Arraylist与LinkedList的区别
Arraylist与LinkedList的区别
Arraylist和LinkedList都是Java中的集合框架,它们都实现了List接口,拥有类似的功能。但是,它们之间仍存在一些本质的区别,主要表现在以下几个方面:
1、存储结构不同
Arraylist是基于数组结构实现的,内部维护一个Object数组,每次添加元素,都会将元素添加到数组中,如果数组满了,就需要扩容,耗费额外的时间和空间;LinkedList是基于链表结构实现的,内部维护一个Node类型的对象,它是一个双向链表,每次添加元素,都会在链表中添加一个Node,不需要额外的时间和空间。
2、查询效率不同
Arraylist的查询效率比较高,因为它是基于数组结构实现的,可以使用下标快速定位到指定的元素,查询效率是O(1);LinkedList的查询效率比较低,因为它是基于链表结构实现的,要定位到指定的元素,需要从头开始遍历,直到找到指定的元素,查询效率是O(n)。
3、插入/删除效率不同
Arraylist的插入/删除效率比较低,因为它是基于数组结构实现的,每次插入/删除,都需要移动指定位置之后的所有元素,耗费额外的时间;LinkedList的插入/删除效率比较高,因为它是基于链表结构实现的,每次插入/删除,只需要修改指针指向,不需要移动元素,所以插入/删除效率较高。
4、空间利用率不同
Arraylist的空间利用率比较高,因为它是基于数组结构实现的,数组中的每个元素都是有效的,没有浪费;LinkedList的空间利用率比较低,因为它是基于链表结构实现的,每个节点除了存储元素值之外,还需要存储两个指针,所以空间利用率较低。
上一篇
PHP选项参数相关的函数有哪些 猜您想看
-
如何在软路由中设置远程开关机
软路由如何设置...
2023年04月17日 -
如何在Docker中部署Node.js应用程序?
如何使用Doc...
2023年04月16日 -
如何制作Cubie版OpenWRT
Cubie版O...
2023年07月20日 -
怎么用JavaScript预测鸢尾花品种
1. 引入数据...
2023年07月22日 -
树莓派如何自动设置时区
1、什么是时区...
2023年05月26日 -
在Linux系统中使用nc命令实现网络操作
介绍nc(ne...
2023年05月15日