Vector源码理解

Vector类

1.系统的变量

//记录元素的数组
protected Object[] elementData;
//上面数组的空间长度
protected int elementCount;
//有效元素数
protected int capacityIncrement;

2.构造函数

     构造方法中主要内容

       this.elementData = new Object[10];
	this.capacityIncrement = 0;

 3.add方法

public synchronized boolean add(E e) {
	modCount++;
        //验证数组空间是否够用
        ensureCapacityHelper(elementCount + 1);
        //添加进去
        elementData[elementCount++] = e;
        return true;
}
 

 这里和ArrayList相比就是增加了同步的synchronized。然后这个类的大部分都有同步操作 ,竟然还包括size这样的方法,让我很不理解,这些类似于只读得操作也需要限制吗?

public synchronized int size()

4.比ArrayList多的方法。

1.copyInto将此向量的组件复制到指定的数组中。

 public synchronized void copyInto(Object[] anArray) {
	System.arraycopy(elementData, 0, anArray, 0, elementCount);
}

2.elements() 返回此向量的组件的枚举,枚举类型以后再分析。

3.firstElement() 返回第一个元素。用了synchronized。

return (E)elementData[0];

4.lastElement() 返回最后一个元素。 用了synchronized。

return (E)elementData[elementCount - 1];

 没什么特别的地方,和ArrayList逻辑非常类似。结束

 

Strack是Vector的子类

里面没什么内容,只是封装了几个简单方法,例如:

   public synchronized int search(Object o) {
	int i = lastIndexOf(o);

	if (i >= 0) {
	    return size() - i;
	}
	return -1;
    }

 

public boolean empty() {
	return size() == 0;
    }

 完。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值