美文网首页
2018-08-08

2018-08-08

作者: 大柚子_ | 来源:发表于2018-08-08 11:22 被阅读0次

Java集合类的底层实现

Vector底层实现和原理

Vector作为List的另外一个典型实现类,完全支持List的全部功能,Vector类也封装了一个动态的,允许在分配的Object[]数组,Vector是一个比较古老的集合,JDK1.0就已经存在,建议尽量不要使用这个集合,Vector与ArrayList的主要是区别是,Vector是线程安全的,但是性能比ArrayList要低。

成员变量

protected Object[] elementData; //存放元素的数组 

protected int elementCount; //已经放入数组的元素个数 

protected int capacityIncrement; //数组的增长系数

构造函数

1.提供初始大小,和增长系数

public Vector(intinitialCapacity,intcapacityIncrement);

2.提供初始大小,增长系数为零

public Vector(int initialCapacity);

3.无参构造方法

默认值为10

4.将指定的集合元素转化为Vector

public Vector(Collection c);

总结:

Vector和ArrayList的实现方式可以看出非常的类似,既然Vector类建议尽量少的使用,还是最好不要用了,通过上面的源码发现,每个方法中都添加了synchronized的关键字来保证同步,所以它是线程安全的,但正是这些方法的同步,让它的效率大大的降低了,比ArrayList的效率要慢。

1.Vector有四个不同的构造方法。无参构造方法的容量为默认值10,仅包含容量的构造方法则将容量增长量(从源码中可以看出容量增长量的作用,第二点也会对容量增长量详细说)明置为0。

2.注意扩充容量的方法ensureCapacityHelper。

与ArrayList相同,Vector在每次增加元素(可能是1个,也可能是一组)时,都要调用该方法来确保足够的容量。当容量不足以容纳当前的元素个数时,就先看构造方法中传入的容量增长量参数CapacityIncrement是否为0,如果不为0,就设置新的容量为就容量加上容量增长量,如果为0,就设置新的容量为旧的容量的2倍,如果设置后的新容量还不够,则直接新容量设置为传入的参数(也就是所需的容量),而后同样用Arrays.copyof()方法将元素拷贝到新的数组。

3.很多方法都加入了synchronized同步语句,来保证线程安全。

4.同样在查找给定元素索引值等的方法中,源码都将该元素的值分为null和不为null两种情况处理,Vector中也允许元素为null。

5.其他很多地方都与ArrayList实现大同小异,Vector现在已经基本不再使用。

相关文章

  • 【随笔】2018-08-08据说,今天适合分手

    今日,2018-08-08; 据说,今天适合分手; 可是, 还没有恋爱; 怎么分手?

  • 感恩日记

    感恩日记 双小宝 2018-08-08 00:03 · 字数 870 · 阅读 0 · 日记本 2018.8.7 ...

  • 夏天

    竹山不爱吃山竹 2018-08-08 19:57 · 字数 2112 · 阅读 0 · 日记本 每年的夏天爸...

  • Android自动化测试

    记录 2018-08-08 该东西只是记录,方便你我他 UiDevice 此类介绍: 打开某个APP 工具介绍 u...

  • PRESS.one,你会用了吗

    [PRESSone拓荒者] 2018-08-08 以下为原作者正文。 PRESS.one的大名很多人都知道,...

  • 手把手教你使用PRESS.one

    [PRESSone拓荒者] 2018-08-08 编者按:不到半年时间,Press.one已经两次重大升级,...

  • 艺像标画画

    周三晚上6:45 周日晚上5:30 2018-08-08晚上6:45。画了一个小雨伞。 西瓜,树叶。

  • 《致良知——责善》

    时间:2018-08-08 君子理应规劝别人向善,这就是“责善”。责善的重点在于“忠告而善道之”,尽心劝诫...

  • 2018-08-08

    2018-08-08 事件:今天听群里分享,觉察自己有份自责。 感受:内疚,自责。 想法:我应该勇敢的去做,去担当...

  • sftp远程与本地文件传输

    writed at 2018-08-08 1.名词解释 ①SSH:是一个安全外壳协议, SSH理解:传统的网络服务...

网友评论

      本文标题:2018-08-08

      本文链接:https://www.haomeiwen.com/subject/fdptbftx.html