源码小结:Java 集合ArrayList,LinkedList 源码

本文详细介绍了Java中List集合的三种实现方式:ArrayList、LinkedList和Vector。分别从它们的底层数据结构、线程安全性及性能特点等方面进行了对比,并给出了实际应用中的选择建议。

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

现在这篇主要讲List集合的三个子类:

  • ArrayList 底层数据结构是数组。线程不安全
  • LinkedList 底层数据结构是链表。线程不安全
  • Vector 底层数据结构是数组。线程安全
ArrayList:
  • 底层实现是数组
  • ArrayList的默认初始化容量是10,每次扩容时候增加原先容量的一半,也就是变为原来的1.5倍
  • 在增删时候,需要数组的拷贝复制(navite 方法由C/C++实现)
LinkedList:

底层实现是双向链表[双向链表方便实现往前遍历]

Vector:
  • 底层是数组,现在已少用,被ArrayList替代,原因有两个:
  1. Vector所有方法都是同步,有性能损失。
  2. 以100%比率增长,相比于ArrayList更多消耗内存。

 

总的来说:查询多用ArrayList,增删多用LinkedList。

ArrayList增删慢不是绝对的(在数量大的情况下,已测试):

如果增加元素一直是使用add()(增加到末尾)的话,那是ArrayList要快

一直删除末尾的元素也是ArrayList要快【不用复制移动位置】

至于如果删除的是中间的位置的话,还是ArrayList要快! 但一般来说:增删多还是用LinkedList,因为上面的情况是极端的~

转载于:https://www.cnblogs.com/yizhiamumu/p/9134919.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值