Vector学习笔记
2018-09-28 本文已影响0人
无敌锤子棒棒鸡
Vector介绍:
1.Vector是一个矢量队列,继承于AbstractList,实现了List, RandomAccess, Cloneable接口。
2.Vector是一个队列,支持增删改查等操作。
3.实现了RandmoAccess接口,可以随机访问元素(这里的随机是指可根据下标访问,感觉大多数的说法是随机,我个人更倾向于任意吧),对于元素的访问快捷方便。
4.实现了Cloneable接口,可以被clone。
5.很重要!!!Vector与ArrayList不同,Vector是线程安全的。
从源码分析:
[底层实现]
protected Object[] elementData;
Vector的底层实现是数组。
[构造方法]
第一种:
public Vector() {
this(10);
}
从这里可以看出Vector的默认长度是10
第二种:
public Vector(int initialCapacity) {
this(initialCapacity, 0);
}
initialCapacity代表了用户可以自定义Vector的初始大小
第三种:
public Vector(int initialCapacity, int capacityIncrement) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
this.capacityIncrement = capacityIncrement;
}
capacityIncrement表示当Vector的默认大小被填满时,Vector的扩充大小。
第四种:
public Vector(Collection<? extends E> c) {
elementData = c.toArray();
elementCount = elementData.length;
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, elementCount, Object[].class);
}
将一个Collection类型的集合填充到Vector容器中。
[容器扩展]
当未设置增长值时,翻倍增长。
遍历方式:
[通过for循环访问]
/** 普通的for循环 **/
for (int i = 0; i < vector.size();i ++){
System.out.println(vector.get(i));
}
/** foreach **/
for(Object member : vector){
System.out.println(member);
}
/** 也可以通过java8的labmda表达式遍历 **/
vector.forEach( member -> {
System.out.println(member);
});
[迭代器遍历]
Iterator iterator = vector.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
[Enumeration遍历]
/** 看了网上的资料,了解到是jdk1.0的产物,出现早于Iterator,一般情况下不会用到 **/
Enumeration enumeration = vector.elements();
while (enumeration.hasMoreElements()){
System.out.println(enumeration.nextElement());
}
PS:今晚出去吃柠檬泰,后天就能回家了,虽然是国庆假期,但是还是带本书回去看看吧。