栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ArrayList和Linked的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ArrayList和Linked的区别

ArrayList和linked的区别
    首先,底层数据结构不同,ArrayList底层是基于数组实现的,linked底层是基于链表实现的由于底层数据结构不同,所使用的场景也不同,ArrayList更是个随机查找,linkedList更适合删除和添加,查询、添加、删除的时间复杂度不同另外ArrayList和linkedList都实现了List接口,但是linkedList还额外实现的Deque接口,所以linkedList还可以当做队列来使用
查询
ArrayList arrayList = new ArrayList();
linkedList linkedList = new linkedList();

//两个通过下标查询,但是通过下标查询也有一定区别
arrayList.get(1);
linkedList.get(1);
// arrayList底层是基于数组实现,可以通过下标直接获取,但是linkedList底层基于链表实现的,
//所以,linkedList的get方法传入的下标是要通过遍历去查询下标

所以在查询方面,ArrayList要比linkedList更适合,但是linkedList中有两个特殊的方法,**getFirst()和getLast()**方法,获取第一个元素和最后一个元素,在linkedList中有两个属性,一个是first一个是last,一直持续记录链表中的第一个元素和最后一个元素的位置

添加

在添加方面ArrayList有两个添加的方法,add(元素)和add(下标,元素)

使用add(元素)方法添加,会直接添加到数组的最后一个位上

当然,数组的添加可能会涉及到数组的扩容,如果不需要扩容,添加肯定是很快的,但是如果涉及到扩容,那么添加肯定涉及到扩容的一个成本的

使用add(index,element)方法去向指定位置添加元素,会涉及到数组的移动,比如我使用arrayList.add(1,2);方法,但是如果这个数组下标为1的地方有元素,那么我需要把原本位置的元素包括后面下标的元素,全部往后移动,然后将元素添加到这个位置

而linkedList的插入,也是同样的add(element)方法和add(index,element)方法

而使用add(index,element)方法,会首先判断传入的下标是否跟集合大小相等,如果相等,直接将Node设置为最后一个元素,否则调用linkBefore()方法先遍历出下标指定位置上面原有的元素,如果指定下标数字比较大,那么遍历肯定是比较麻烦的

单从插入来讲,区别并不是很大,效率视使用场景而定

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/748895.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号