(List集合)Vector子类

Vector子类

Vector是一个原始无脑的程序类,在JDK1.0就提供了,而后到了JDK1.2的时候由于许多开发者已经习惯了于使用Vector,并且许多系统类也是基于Vector实现的,考虑到其使用的广泛性,所以类集框架将其保存了下来,并且让其多实现了一个List接口,观察Vector的定义结构:

public class Vector<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, Serializable

继承结构与ArrayList是相同的,所以来讲这个类继承结构如下:

 范例:Vector使用

import java.util.List;
import java.util.Vector;

public class LinkedListDemo {

    public static void main(String[] args) {

        List<String> all = new Vector<>();
        all.add("Hello");
        all.add("Word!");
        all.forEach((String str)->{
            System.out.println(str);
        });

    }

}

Hello
Word!

进一步观察Vector实现:

//无参构造
public Vector() {
        this(10);    //调用单参构造
    }

//单参构造
public Vector(int initialCapacity) {
        this(initialCapacity, 0);    //调用双参构造
    }

//双参构造
public Vector(int initialCapacity, int capacityIncrement) {
        super();   
        if (initialCapacity < 0)    //给的空间大小小于0抛出异常
            throw new IllegalArgumentException("Illegal Capacity: "+
                                               initialCapacity);
        this.elementData = new Object[initialCapacity];
        this.capacityIncrement = capacityIncrement;
    }

在使用无参时默认就会分配10个长度的空间,而后实现操作与ArrayList是相同的,接下来再观察add()方法:

//Vector 
public synchronized boolean add(E e) {
        modCount++;
        add(e, elementData, elementCount);
        return true;
    }

//ArrayList
 public boolean add(E e) {
        modCount++;
        add(e, elementData, size);
        return true;
    }

可以发现Voctor采用的是synchronized同步处理(不只是add()方法),而ArrayList没有,所以Vector之中的方法在多线程访问是属于线程安全的,但是性能也会有所下降。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值