linkedlist和arraylist的区别是什么(java的四种引用关系从强到弱)

发布日期:2024-05-19 12:46:07     手机:https://m.xinb2b.cn/yule/news95206.html    违规举报
核心提示:首先,底层数据结构不同 ArrayList底层基于数组实现,连续内存存储,需要预先申请分配一段连续的内存空间(创建数组对象),适合下标访问(随机访问),需要创建多大的数组不好确定,如果数组长度过大,会造成内存空间浪费的问题,如果数组长度过小

linkedlist和arraylist的区别是什么(java的四种引用关系从强到弱)

首先,底层数据结构不同

ArrayList底层基于数组实现,连续内存存储,需要预先申请分配一段连续的内存空间(创建数组对象),适合下标访问(随机访问),需要创建多大的数组不好确定,如果数组长度过大,会造成内存空间浪费的问题,如果数组长度过小,当数组已满时想要添加新的元素,就需要创建一个新的数组,新的数组长度是旧数组的1.5倍,并把数据从旧数组复制到新数组中,然后才能添加新的元素。创建新的数组、旧数组数据复制到新数组,都是比较重量级的操作。另外,如果不是在尾部插入、删除数据还会涉及到元素的移动,使用尾插法并指定初始容量可以极大提高性能,甚至超过linkedList,因为linkedList需要创建大量的node对象。

linkedList底层基于双向链表实现,元素可以储存在分散的内存中,适合做数据插入操作及删除操作,不适合随机查询,需要逐一遍历。

其次,ArrayList和linkedList都实现了List接口,但是linkedList还额外地实现了Deque接口,所以linkedList还可以当作队列来用,利用双向链表和队列的特性,还是可以当作栈来使用。

 
 
本文地址:https://www.xinb2b.cn/yule/news95206.html,转载请注明出处。

推荐图文
推荐娱乐运动
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  违规举报  |  蜀ICP备18010318号-4  |  百度地图  | 
Processed in 0.059 second(s), 91 queries, Memory 0.46 M