java学习笔记(五)collections--vector

Vector是很有用的一个数据集合,我们可以把它看成一个长度不确定的动态空间分配的数组,也可以看做一个链表,那么下面介绍一些vector中常用的操作涉及到的函数:

----------------------------------------------创建一个vector------------------------------------------------------

public Vector()
public Vector(int initialCapacity)
public Vector(int initialCapacity, int capacityIncrement)

这三个构造函数会创建一个空的vector,其中有两个参数,一个是initialCapacity,代表vector初始状态下分配的内存大小,默认情况下是10个元素的大小,capacityIncrement是代表每次分配的空间不够用的时候,空间重新分配的时候翻倍的比率,默认是空间不够的情况下空间翻一倍。

我们之所以要确定初始的分配的空间,是因为每次重新分配空间的时候,都需要将所有的元素重新拷贝一遍,所以如果能够提前知道vector大概需要的内存,那么我们可以通过直接分配初始内存,保证内存既不会浪费太多,也不会因为太多次内存重置而降低效率。

public Vector(Collection c)

我们可以通过一个现有的集合进行一个浅拷贝(只保存地址),对于一个数组,我们可以通过asList函数函数达到同样的效果

如果vector设置的参数为负数,那么抛出异常IllegalArgumentException

如下:

Vector v = new Vector(Arrays.asList(array));

----------------------------------------------添加元素-------------------------------------------------------------

public boolean add(Object element)
public void addElement(Object element)

两个函数都是将元素添加到vector的末尾

public void add(int index, Object element)
public void insertElementAt(Object element, int index)

如果插入的位置为-1或者插入的位置超过末尾位置,那么会抛出异常ArrayIndexOutOfBoundsException

public void add(int index, Object element)
public void insertElementAt(Object element, int index)

这种操作效率很多,不推荐使用的

public boolean addAll(Collection c)
public boolean addAll(int index, Collection c)

一次性添加多个元素

------------------------------------------删除元素------------------------------------------------------------------

1.删除全部元素:

public void clear()
public void removeAllElements()

删除所有的元素,但是vector占用的空间是不变的。

2.删除单个元素

public Object remove(int index)
public void removeElementAt(int index)

按照坐标去删除单个元素

public boolean remove(Object element)
public boolean removeElement(Object element)

按照对象删除单个元素,会删除匹配到这个对象的第一个元素。再删除掉中间的元素时会利用后面的元素去填充删除后流出的空缺

3.删除一个集合当中存在的元素

public boolean removeAll(Collection c)

将集合中存在的元素从vector中删除掉

public boolean retainAll(Collection c)

只保留当前vector中在当前集合中存在的元素

---------------------------------------替换元素--------------------------------------------------------------------

public Object set(int index, Object element)
public void setElementAt(Object obj, int index)

修改某个位置上的元素

-------------------------------------vector的尺寸-----------------------------------------------------------------

public int size()
public void setSize(int newSize)

前一个函数获取vector中元素的个数,第二个函数用来设置尺寸,如果新设置的尺寸小于当前尺寸,那么会将末尾的元素丢弃

public boolean isEmpty()

判断当前的vector是否为空

public int capacity()

获取当前vector预留的空间大小

public void ensureCapacity(int minCapacity)

如果空间足够大,那么无变化,如果空间不够,那么增长

----------------------------------访问元素-----------------------------------------------------------------------

1.通过下标获取元素

public Object get(int index)
public Object elementAt(int index)

2.通过位置获取元素

public Object firstElement()
public Object lastElement()

3.迭代器的应用,继承自AbstractList

public Iterator iterator()
public ListIterator listIterator()
public ListIterator listIterator(int index)

下面有一个例子:

Vector v = . . .
Iterator i = v.iterator();
while (i.hasNext()) {
process(e.next());
}

迭代器帮助我们更方便的遍历一个vector集合

4.至于多维的vector的使用,下面一个例子可以很清晰额表达

MyType o = (MyType)((Vector)vector.elementAt(3)).elementAt(2);

MyType o = (MyType)((Vector)vector.get(3)).get(2);

---------------------------------------查找元素------------------------------------------------------------

1.检查元素的存在性

public boolean contains(Object element)

找到某个元素的最早出现位置

public int indexOf(Object element)
public int indexOf(Object element, int index)

找到某个元素的最后一次出现的位置

public int lastIndexOf(Object element)
public int lastIndexOf(Object element, int index)

检查vector是否存在某个集合中的全部元素

public boolean containsAll(Collection c)

--------------------------------------拷贝元素---------------------------------------------------------------

1.利用clone()函数克隆一个新的vector

Vector v1 = . . .;
Vector v2 = (Vector)v1.clone();
Collections.sort(v2);

2.

public Object[] toArray()
public Object[] toArray(Object[] a)
public void copyInto(Object[] anArray)

我们如果利用第一个函数获得一个数组,那么它会得到一个尺寸正合适的数组,如果用第二个版本的重载,那么如果参数的数组足够存的话会直接存到参数给出的数组,如果数组的尺寸不够的话,那么会返回一个重新申请的尺寸更大的数组。

Vector v = . . .;
String array[] = new String[v.size()];
array = (String[])v.toArray(array);

3.

Vector v = . . .;
String array[] = new String[v.size()];
v.copyInto(array);

利用这个函数可以将vector拷贝到一个已经确定尺寸的数组当中。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值