2016 - 2024

感恩一路有你

arraylist改造线程安全list 线程安全list是哪一个?

浏览量:2791 时间:2021-03-15 04:51:19 作者:admin

线程安全list是哪一个?

最基本的向量,java1.5中添加的copyonwritearraylist和集合的synchronized list(list)可以将列表变成线程安全的列表。

ArrayList和LinkedList都是线程安全的吗?

所有都是线程安全的。

ArrayList和LinkedList的区别及其优缺点ArrayList和LinkedList的一般区别如下:ArrayList是基于动态数组的数据结构,LinkedList是基于链表的数据结构。对于获取和设置的随机访问,ArrayList优于LinkedList,因为LinkedList移动指针。对于添加和删除操作,linedlist更有优势,因为ArrayList移动数据。

1、同步ArrayList、LinkedList不同步,vestor同步。因此,如果不需要线程安全,可以使用ArrayList或LinkedList来节省同步成本。但是在多线程的情况下,有时我们不得不使用向量。当然,ArrayList和LinkedList也可以通过某些方式进行打包以同步它们,但是效率可能会降低。

2、在数据增长的内部实现机制方面,ArrayList和vector以objec数组的形式存储。向这两种类型添加元素时,如果元素的数量超过内部数组的当前长度,则需要扩展内部数组的长度。默认情况下,Vector会自动将原始数组的长度加倍,ArrayList是原始数组的50%,因此最终集合所占用的空间始终大于您所需的空间。因此,如果要在集合中存储大量数据,vector有一些优点,因为可以设置集合的初始化大小以避免不必要的资源开销。

3、在ArrayList和vector中检索、插入和删除对象的效率,从指定位置检索对象(使用索引)或在集合末尾插入或删除对象的时间是相同的,可以表示为O(1)。但是,如果从集合的其他部分添加或删除元素,所花费的时间将线性增加:O(n-i),其中n表示集合中元素的数量,i表示添加或删除的元素的索引位置。为什么?执行上述操作时,集合中第i个和第i个元素之后的所有元素都必须执行(n-i)对象的置换操作。在LinkedList中,在集合中的任何位置插入和删除元素需要相同的时间-O(1),但索引元素(即O(I))的速度较慢,其中I是索引的位置。

arraylist改造线程安全list arraylist实现线程安全 arraylist线程安全性能

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。