ArrayList与LinkedList的区别

导读:本篇文章讲解 ArrayList与LinkedList的区别,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

ArrayList与LinkedList有什么区别

  1. 底层实现原理不同: ArrayList底层实现是数组,LinkedList是双向链表 基于实现原理的不同 ArrayList更适合于随机查找 ArrayList指定下标查找元素是非常快的,例如arrayList.get(1),因为数组已经给元素分配好了内存空间,可以直接去取。 而LinkedList如果想去linkedList.get(1)的话需要去循环遍历。 但是LinkedList如果查询第一个元素和最后一个元素的话也是非常快速的,因为LinkedList持续记录了第一个和最后一个元素,可以使用linkedList.getFirst()和linkedList.getLast()获取,不涉及遍历。 LinkedList更适合于添加删除 ArrayList添加时两种方法: arrayList.add(“a”)和arrayList.add(1,“a”), arrayList.add(“a”)是在数组最后一个位置添加元素,ArrayList添加涉及到数组的扩容,当初始化一个ArrayList时,他的长度为0,当添加第一个元素时会给其分配一个10的长度,在我们执行add方法时,如果此时长度不足会去调用grow()扩容方法,每次扩容长度为上次的1.5倍,小数则会舍弃,即为10->15->22… 如果add时不需要扩容那么速度还是很快的,如果需要扩容时那么则会增加扩容的开销。 arrayList.add(1,“a”)是在指定位置添加元素 相应的arrayList.add(1,“a”)这种方式,如果原位置上已经有元素,那么会增加元素向后移动的开销。 对应的linkedList.add(“a”)则会在链表的最后增加一个元素,不会涉及到扩容,而另一种linkedList.add(1,“a”),这种插入操作的话LinkedList也需要循环去取到下标,那此时的速度取决于下标的大小。

2.LinkedList实现了deque接口,所以LinkedList还可以当做双端队列使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/1989.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!