Array List、 Linked List、Hash Map 底层原理

Array List

Array List的底层原理
  • 底层是数组ArrayList是对数组进行了封装,底层就是数组。这使得它具有数组的优点和缺点。

  • 默认初始化容量为10:在第一次创建集合并添加第一个元素时,在底层会创建一个默认长度为10的数组。当元素个数超过当前数组长度时,会触发扩容操作。

  • 扩容机制:扩容时,会创建一个新的数组,长度通常是旧数组的1.5倍(即原容量的1.5倍),然后将原数组中的元素复制到新数组中。这种方式可以避免每次添加新元素都需要进行数组的扩容操作,提高了性能。

查询快

ArrayList通过索引来直接访问元素,因为底层是数组,所以查询速度非常快,时间复杂度为O(1)。

增删慢

由于底层是数组,所以在插入或删除元素时,需要将插入点后的所有元素向后移动,这会导致较高的时间复杂度,特别是在数组的中间或开头插入或删除元素时。

线程不安全

ArrayList是线程不安全的,这是因为其底层数组的非同步特性。在多线程环境下使用时,需要通过外部同步手段来保证线程安全性。

Linked List

Linked List的底层原理
  • 双向链表结构LinkedList的底层是双向链表结构,每个节点对象除了包含指向下一个节点的引用(next)外,还包含指向前一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值