java中ArrayList、Vector、LinkedList的存储性能和特性

ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector中的方法由于添加了synchronized修饰,因此Vector是线程安全的容器,但性能上较ArrayList差,因此已经是Java中的遗留容器。LinkedList使用双向链表实现存储(将内存中零散的内存单元通过附加的引用关联起来,形成一个可以按序号索引的线性结构,这种链式存储方式与数组的连续存储方式相比,内存的利用率更高),按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。Vector属于遗留容器(Java早期的版本中提供的容器,除此之外,Hashtable、Dictionary、BitSet、Stack、Properties都是遗留容器),已经不推荐使用,但是由于ArrayList和LinkedListed都是非线程安全的,如果遇到多个线程操作同一个容器的场景,则可以通过工具类Collections中的synchronizedList方法将其转换成线程安全的容器后再使用(这是对装潢模式的应用,将已有对象传入另一个类的构造器中创建新的对象来增强实现)。

java中ArrayList、Vector、LinkedList的存储性能和特性-上流阁

*文章为作者独立观点,不代表上流阁立场
本文由 江风成 授权 上流阁 发表,并经上流阁编辑。转载此文章须经作者同意,并请附上出处(上流阁)及本页链接。原文链接https://www.o6c.com/java/2019/11/08/1314.html
发表评论

坐等沙发
相关文章
java中ArrayList和LinkedList的区别
java中ArrayList和LinkedList的区别
java中ArrayList,Vector,LinkedList的存储性能和特性
java中ArrayList,Vector,LinkedList的存…
jar包解压后,修改完配置文件,再还原成jar包
jar包解压后,修改完配置文件,再还原成…
JAVA DES 十六进制加密
JAVA DES 十六进制加密
mysql 优化方案整理
mysql 优化方案整理
浏览器插件管理地址 谷歌 360 浏览器 国产化适配中PageOffice 浏览器支持查看
浏览器插件管理地址 谷歌 360 浏览器 国…
javaweb开发程序员php开发,微信开发。接受定制开发

最新评论