ArrayList和LinkedList的共同点、区别

  • ArrayList和LinkedList的共同点、区别

共同点:二者都是非线程安全的;

ArrayList:底层由数组实现,,随机访问速度较快,插入删除较快;一般用于频繁访问元素、只有在列表末尾添加和删除时使用;线程不安全;

ArrayList基于动态数组实现,为Object类型,默认初始容量为10,扩容因子为1.5,扩容机制:

扩容条件:通常,ArrayList会在元素数量达到当前容量时触发扩容操作。当元素数量等于或超过当前容量时,ArrayList就会启动扩容机制 扩容策略:ArrayList会创建一个新的更大的数组,通常情况下,新数组的容量会是当前容量的1.5倍(这个倍数可以通过ensureCapacity方法或构造函数的参数进行调整)。然后,ArrayList会将所有现有元素复制到新数组中。

线程不安全:线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。

ArrayList非线程安全原因:为什么说ArrayList是线程不安全的?_arraylist为什么不是线程安全的-CSDN博客

LinkedList:底层由双向链表实现,插入删除速度较快,但是查找的速度较慢;

ArrayListLinkedList
访问元素O(1)O(n)
插入/删除元素O(n)O(1)

对于随机index访问的get和set方法,一般ArrayList的速度要优于LinkedList。因为ArrayList直接通过数组下标直接找到元素;LinkedList要移动指针遍历每个元素直到找到为止。 新增和删除元素,一般LinkedList的速度要优于ArrayList。因为ArrayList在新增和删除元素时,可能扩容和复制数组;LinkedList实例化对象需要时间外,只需要修改指针即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值