摘要:不同点是线程安全的,方法有关键字修饰。容量增长策略默认的增长策略是每次在原容量的基础上。的怎么做到线程安全的实现了自己的,为了保证并发线程安全的共享一个,开发者在等方法中也加入了。与类继承自,的实现不止一种方式,比如。
java.util.Vector
Vector与ArrayList的异同相同点:随机存取,可通过位置序号直接获取数据。都是通过一个数组来存放元素。
不同点:Vector是线程安全的,方法有synchronized关键字修饰。
Vector容量增长策略Vector默认的增长策略是每次在原容量的基础上x2。
Vector的ListIterator怎么做到线程安全的Vector实现了自己的iterator,为了保证并发线程安全的共享一个Vector,开发者在next等方法中也加入了synchronized。
public E next() { synchronized (Vector.this) { checkForComodification(); int i = cursor; if (i >= elementCount) throw new NoSuchElementException(); cursor = i + 1; return elementData(lastRet = i); } }
这里synchronized修饰的是Vector.this对象本身,而不是iterator自己,这样多个线程使用iterator操作Vector时,就可以保证线程的安全。
Vector与ArrayList实现的Spliterator类似唯一的区别就是在使用自己的Vector时,加上了synchronized关键字。
Stack与VectorStack类继承自Vector,stack的实现不止一种方式,比如LinkedList。java中在Vector基础上实现了一个Stack。实现的想法也很简单,就是在数组的末尾push和pop。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67830.html
摘要:容器相关的操作及其源码分析说明本文是基于分析的。通常,我们通过迭代器来遍历集合。是接口所特有的,在接口中,通过返回一个对象。为了偷懒啊,底层使用了迭代器。即返回的和原在元素上保持一致,但不可修改。 容器相关的操作及其源码分析 说明 1、本文是基于JDK 7 分析的。JDK 8 待我工作了得好好研究下。Lambda、Stream。 2、本文会贴出大量的官方注释文档,强迫自己学英语,篇幅...
摘要:说一说迭代器通过集合对象获取其对应的对象判断是否存在下一个元素取出该元素并将迭代器对象指向下一个元素取出元素的方式迭代器。对于使用容器者而言,具体的实现不重要,只要通过容器获取到该实现的迭代器的对象即可,也就是方法。 前言 欢迎关注微信公众号:Coder编程获取最新原创技术文章和相关免费学习资料,随时随地学习技术知识!** 本章主要介绍Collection集合相关知识,结合面试中会提到...
摘要:底层使用的是双向链表数据结构之前为循环链表,取消了循环。快速随机访问就是通过元素的序号快速获取元素对象对应于方法。而接口就是用来标识该类支持快速随机访问。仅仅是起标识作用。,中文名为双端队列。不同的是,是线程安全的,内部使用了进行同步。 前言 学习情况记录 时间:week 2 SMART子目标 :Java 容器 记录在学习Java容器 知识点中,关于List的需要重点记录的知识点。...
摘要:集合类关系是和的父接口。相等必须是对称的,约定只能和其它相等,亦然。和接口在中引入,这个单词是和的合成,用来分割集合以给并行处理提供方便。这些并不立即执行,而是等到最后一个函数,统一执行。 集合类关系: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ...
阅读 2813·2023-04-25 23:08
阅读 1606·2021-11-23 09:51
阅读 1587·2021-10-27 14:18
阅读 3129·2019-08-29 13:25
阅读 2844·2019-08-29 13:14
阅读 2924·2019-08-26 18:36
阅读 2205·2019-08-26 12:11
阅读 826·2019-08-26 11:29