在写java的时候,基本上都喜欢用arraylist,甚至我都不知道有个vector的存在。查了一下发现又是线程安全问题。。。咋个线程安全天天围着我转呢。。。多得阿里巴巴,让我开始认识java的所谓线程安全问题。

the following is from:http://blessed24.javaeye.com/blog/751336

1. Vector & ArrayList
1)  Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
2) 当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。

2. Hashtable & HashMap
Hashtable和HashMap它们的性能方面的比较类似 Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。

3. ArrayList & LinkedList

ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组,但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它们在性能上有很大的差别:
       从上面的分析可知,在ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能; 而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。

如果在编程中,1、2两种情形交替出现,这时,你可以考虑使用List这样的通用接口,而不用关心具体的实现,在具体的情形下,它的性能由具体的实现来保证。

4. 配置集合类的初始大小
    在Java集合框架中的大部分类的大小是可以随着元素个数的增加而相应的增加的,我们似乎不用关心它的初始大小,但如果我们考虑类的性能问题时,就一定要考虑尽可能地设置好集合对象的初始大小,这将大大提高代码的性能。
    比如,Hashtable缺省的初始大小为101,载入因子为0.75,即如果其中的元素个数超过75个,它就必须增加大小并重新组织元素,所以,如果你知道在创建一个新的Hashtable对象时就知道元素的确切数目如为110,那么,就应将其初始大小设为110/0.75=148,这样,就可以避免重新组织内存并增加大小。

转载于:https://www.cnblogs.com/plmnko/archive/2010/10/10/1847362.html

【转】Vector与ArrayList区别相关推荐

  1. Vector和ArrayList区别

    Vector和ArrayList在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素.   Vector的方法都是同步的(Synchronized),是线程安全 ...

  2. java vector和arraylist区别_ArrayList和Vector的区别

    相同点: 1.ArrayList和Vector都是继承了相同的父类和实现了相同的接口 2.底层都是数组实现的 3.初始默认长度都为10. 不同点: 1.同步性: Vector中的public方法多数添 ...

  3. ArrayList和Vector有什么区别?

    本文翻译自:What are the differences between ArrayList and Vector? 两个数据结构ArrayList和Vector之间有什么区别,你应该在哪里使用它 ...

  4. Java Vector与ArrayList的区别

    俗话说最危险的地方最安全,写Java代码的时候Vector估计是最常用的集合类了,ArrayList用得也不少.不过关于这两个类有什么区别竟然从来就没去关注过,直到今天才偶然发现这两个类其实有重大区别 ...

  5. Java并发编程之:Vector和ArrayList的区别

    2019独角兽企业重金招聘Python工程师标准>>> Java中Vector和ArrayList的区别 首先看这两类都实现List接口,而List接口一共有三个实现类,分别是Arr ...

  6. 【蓝桥杯Java_C组·从零开始卷】第八节、集合——list详解(ArrayList、 LinkedList 和 Vector之间的区别)

    ArrayList. LinkedList 和 Vector之间的区别 ArrayList. LinkedList 和 Vector都实现了List接口,是List的三种实现,所以在用法上非常相似.他 ...

  7. 复习Java.Lang包Java面试题Vector、ArrayList、LinkedList区别生活【记录一个咸鱼大学生三个月的奋进生活】007

    记录一个咸鱼大学生三个月的奋进生活007 复习Java(Lang包) 数据包装类 字符类Character的常用方法 字符串类(String) StringBuffer类的常用方法 Math类的常用方 ...

  8. 在Java中Vector和ArrayList的区别

    http://www.jdon.com/jivejdon/thread/11661.html 1,vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的.如果不考 ...

  9. Java 对比Vector、ArrayList、LinkedList

    ①引言 在日常生活中能高效的管理和操作数据是非常重要的.Java提供了强大的集合框架,大大提高了开发者的生产力,今天就了解一下有关集合框架方面的问题. Vector.ArrayList.LinkedL ...

最新文章

  1. 一个男人的潜力有多大,就看这几点!
  2. POJ 3264 Balanced Lineup
  3. msdn画圆弧函数_三角函数常识2020
  4. 韵乐x5效果器ktv最佳参数_家庭ktv(卡拉ok)家庭影院ktv选购推荐攻略
  5. 互联网日报 | 6月9日 星期三 | 腾讯发布长中短视频计划;阿里云新增两大海外数据中心;陌陌持续25个季度盈利...
  6. MyBatis动态SQL使用
  7. redis之proxy集群之twemproxy
  8. SAP License:BCS进阶第五篇-BCS合并现金流量表的实现
  9. 用GZIP来压缩socket传输的序列化的类
  10. 从机器学习谈起 (转)
  11. 《政府采购货物和服务招标投标管理办法》指明的方向
  12. python大漠库_python类似大漠插件的库
  13. 未来新一代计算机发展趋势有,未来新一代计算机的代表有()。
  14. 在程序中使用3D Vision--转帖
  15. ASPNET 5 和 dnx commands
  16. 如何制作一个U盘启动盘和重装window系统
  17. Matlab数字图像处理学习记录【2】——亮度变换与空间滤波
  18. 2018------书籍电影和音乐
  19. [jzoj 3461]【NOIP2013模拟联考5】小麦亩产一千八 {Fibonacci数列}
  20. 技术+服务:警翼智能欲筑高“护城河”

热门文章

  1. C#学习笔记:预处理指令
  2. 关于 Android 和 iOS 流畅度的一切
  3. 整合axis2到web项目中
  4. 第一次项目之后...
  5. 2008年CCNA第二学期第九单元题目(2008-12-14 14:04:38)
  6. sql 2005 try catch
  7. 三星要用Exynos 9芯片打造独立VR头显
  8. jq 组装数组_Jquery 数组操作
  9. 表示自己从头开始的句子_微信拍一拍后缀幽默回复有趣的句子 拍了拍唯美内容文案...
  10. mysql 存储过程月单拆天单_MySQL之存储过程按月创建表的方法步骤