ArrayList与LinkedList

本文深入探讨了ArrayList与LinkedList在增删改查操作上的性能差异,解析了它们的底层实现原理,包括数组与链表的不同特性,以及这些差异如何影响实际应用中的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  ArrayList与Linkedlist的增删改查问题以及集合选择问题

线程:安全:Vector

   不安全:ArrayList,LinkedList

        增删多:LinkedList

        查询多:ArrayList

   1. ArrayList为什么查询快:

       底层是数组,在内存中开辟空间,是连续的,查询时可以直接定位到查询的位置(根据偏移量查询)

 

   LinkedList为什么查询慢:

       因为LinkedList是底层是链表,查询时单链表是[元素|下一个元素地址这种结构]只能从第一个依次开始查,在Java中LinkedList是双连边结构[上一个元素地址|元素|下一个元素地址]这种结构查询时,判断指针是距离首端近还是尾端近,离首近则从第一个开始查询,否则从末尾开始。(速度有所提高),越是查询的是中间元素速度越慢。

 

  2.ArrayList为什么增删慢:

      增删时因为是数组结构当删除一个元素是其他元素都要移动,就是慢的原因,当然在末尾增加就没有这个问题也会快一些。

 

  LinkedListt为什么增删快:

      增删时时链表结构,在内存中结构元素存储不连续增删时最多影响两个元素。就是快的原因。

 

     加油:           

 

转载于:https://www.cnblogs.com/meani/p/11252962.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值