vector和arraylist
来源:互联网 发布:kol粉丝数据分析 编辑:程序博客网 时间:2024/06/04 09:49
最近在翻java编程思想,看到了书上的一段话在吐槽Vector和HashTable:
1.vector作为java1.0和1.1中广泛运用的基础类所有方法被设计为final,使使用者无法继承该类开发出其他有用的类,然而自身设计Stack类时却继承了Vector
2.然而HashTable同样作为一个重要的1.0和1.1的标准类库却明显不包含任何final方法
Vector和ArrayList:
Vector和ArrayList都是通过数组实现,并且都继承了AbstractList,实现了List接口,最大的不同在于Vector是线程同步的,查看Vector的源代码可以看到几乎所有的类都用关键字synchronized修饰,而ArrayList是非线程同步的。
1.Vector和ArrayList内部的方法几乎一样,查看源码的构造函数有四种,但无论通过哪种方式初始化都需要指定vector的初始容量(直接指定、默认为10、通过Collection的size()),并且Vector的扩容策略是:如果指定了capacityIncrement且<=0,则每次容量增大为原来的两倍,否则增大的容量为指定的capacityIncrement。
2.ArrayList非同步,在不要求同步的场景下性能优于Vector,ArrayList的扩容策略为每次增加之前容量的1/2
线程同步会有大量开销影响性能,所以Vector性能不如ArrayList。同时由于底层实现二者都是基于数组,所以随机访问速度较好,而增删操作性能一般(相较于LinkedList,这是因为增删操作需要对数据进行一系列操作,代价较大,查看源码可看到对于插入和删除操作,都需要复制数据到新的存储空间中(使用System.arraycopy)。
ps:LinkedList在随机访问其中的元素时需要遍历整个List来达到目的,速度较慢,但是由于其数据结构是链表结构存储,适合数据的动态插入和删除。
- vector 和 ArrayList
- [翻译] vector 和 ArrayList
- 小议Vector和ArrayList
- ArrayList、Vector和LinkedList
- LinkedList、ArrayList和Vector
- Vector和ArrayList
- ArrayList 和Vector区别
- LinkedList,ArrayList和Vector
- Vector和ArrayList区别
- ArrayList、Vector和LinkedList
- ArrayList、Vector和LinkedList
- ArrayList 和Vector
- Vector和ArrayList
- 区别:Vector和ArrayList
- ArrayList 和 Vector 比较
- ArrayList、LinkedList和Vector
- ArrayList、Vector和LinkedList
- Vector和ArrayList区别
- 【微信小程序】在手机上查看调试微信小程序
- [数学 FFT] Codechef July Challenge 2017 #APRPS Irrational Root
- FreeRTOS
- 如何快速了解github,并将本地代码上传
- 伯德图
- vector和arraylist
- html中表单提交注意事项
- 【bzoj1528】 [POI2005]sam-Toy Cars
- Spring boot下使用Quartz--多实例解决方案
- PL/SQL中直接写SQL语句和用EXECUTE IMMEDIATE方法的区别
- linux 安装mysql和主从配置 + Spring 基于注解配置mysql读写分离
- Java基础之方法学习
- JAVA调用DLL -- JNA和Fat Jar的使用及打包问题(一)
- 解读opentsdb之aggregator