Java容器类研究6:Vector

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与Vector

Stack类继承自Vector,stack的实现不止一种方式,比如LinkedList。java中在Vector基础上实现了一个Stack。实现的想法也很简单,就是在数组的末尾push和pop。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值