Java中vector的用法

Vector的使用

vector类底层数组结构的,它包含可以使用整数索引进行访问的组件。不过,vector的大小可以根据需要增大或缩小,以适应创建vector后进行添加或移除项的操作,因此不需要考虑元素是否越界或者会不会浪费内存的问题。

由vector的iterator和listIterator方法所返回的迭代器是快速失败的:也即是它不能并发执行操作。如果在迭代器创建后的任意时间从结构上修改了向量(通过迭代器自身的remove或add方法之外的任何其他方式),则迭代器将抛出ConcurrentModificationException。因此,面对并发的修改,迭代器很快就完全失败,而不是冒着将来不确定的时间任意发生不确定行为的风险。

vector的elements()方法返回的Enumeration不是快速失败的。

通过代码说明这个问题:

package cn.list.demo;

import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

public class VectorDemo {
	public static void main(String[] args)
	{
		Vector v=new Vector();

		v.addElement("abc1");
		v.addElement("abc2");
		v.addElement("abc3");
		v.addElement("abc4");
		
		Enumeration en=v.elements();
		while(en.hasMoreElements())
		{
			Object object=en.nextElement();
			if(object.equals("abc3"))
			{
				v.addElement("abc5"); // 不会出现异常
			}
			System.out.println(object);
		}
		
		Iterator it=v.iterator();
		while(it.hasNext())
		{
			Object obj=it.next();
			if(obj.equals("abc3"))
			{
				v.addElement("abc5");// 会出现异常
				// 面对并发的修改,迭代器很快就完全失败!
			}
			System.out.println(obj);
		}
		
	}
}


Vector的四种构造方法:

1、Vector();    构造一个空向量,使其内部数据数组的大小为10,其标准容量增量为零。     Vector vec=new Vector();

2、Vector(Collection c);    构造一个包含指定collection中的元素的向量,这些元素按其collection的迭代器返回元素的顺序排列。  Vector v=new Vector(vec);

3、Vector(int initialCapacity);   使用指定的初始容量和等于零的容量增量构造一个空向量。

4、Vector(int initialCapacity,int capacityIncrement);   使用指定的初始容量和容量增量构造一个空的向量。
Vector类中的方法:

1、boolean add(E e);              将指定的元素添加到此向量的末尾。

2、void addElement(E obj);   将指定的组件添加到此向量的末尾,将其大小增加1。

3、void add(int indext,E e);     在此向量的指定位置插入指定的元素。

4、boolean addAll(Collection c);   将指定Collection中的所有元素添加到此向量的末尾,按照指定collection的迭代器所返回的顺序添加这些元素。

5、boolean addAll(int index,Collection c);   在指定位置将指定Collection中的所有元素插入到此向量中。

6、int  capacity();       返回此向量的当前容量。

7、Object clone();      返回向量的一个副本。

8、boolean contains(Object o);  如果此向量包含指定的元素,怎返回true。

9、boolean containsAll(Collection c);   如果此向量包含Collection中的所有元素,则返回true。

10、void copyInto(Object[] anArray);       将此向量的组件复制到指定的数组中。

11、E elementAt(int index);         返回指定索引处的组件。

12、Enumeration<E> elements();  返回此向量的组件的枚举。

13、void ensureCapacity(int minCapacity);    增加此向量的容量(如有必要),以确保其至少能够保证最小容量参数指定的组件数。

14、boolean equals(Object o);       比较指定对象与此向量的相等性。

package cn.list.demo;

import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

public class VectorDemo {
	public static void main(String[] args)
	{
		Vector v=new Vector();
		v.addElement("abc1");
		v.addElement("abc2");
		v.addElement("abc3");
		v.addElement("abc4");
		
		Vector vec=new Vector();
		vec.add("abc1");
		vec.add("abc2");
		vec.add("abc3");
		vec.add("abc4");
		System.out.println(v.equals(vec));
		
	}
}
15、E firstElement();        返回此向量的第一个组件(位于索引0)处的项。
package cn.list.demo;

import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

public class VectorDemo {
	public static void main(String[] args)
	{
		
		Vector v=new Vector();
		
		v.addElement("abc1");
		v.addElement("abc2");
		v.addElement("abc3");
		v.addElement("abc4");
		
		System.out.println(v.firstElement());
		System.out.println(v.firstElement());
		
		Vector vec=new Vector();
		vec.add("aa");
		vec.add("bb");
		v.add(0,vec);    // 插入第一个位置
		System.out.println(v.firstElement());
		System.out.println(v.firstElement());
	}
}
16、E lastelement();      返回此向量的最后一个组件。代码略。

17、E get(int index);       返回向量中指定位置 的元素。

package cn.list.demo;

import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

public class VectorDemo {
	public static void main(String[] args)
	{
		
		Vector v=new Vector();
		
		v.addElement("abc1");
		v.addElement("abc2");
		v.addElement("abc3");
		v.addElement("abc4");
		System.out.println(v.get(0));
		System.out.println(v.get(3));
		// 在这里,index值不能小于0,或者大于3
	}
}
18、int hashCode();    返回此向量的哈希码值。

package cn.list.demo;

import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

public class VectorDemo {
	public static void main(String[] args)
	{
		
		Vector v=new Vector();
		
		v.addElement("abc1");
		v.addElement("abc2");
		v.addElement("abc3");
		v.addElement("abc4");
		
		System.out.println(v.hashCode());
	}
}
19、int indexOf(Object o,int index);   返回此向量中第一次出现的指定的元素的索引,从index处正向索引,如果未找到该元素,则返回-1.

20、int indexOf(Object o);       返回此向量中第一次出现的指定元素的索引,如果此向量不包含该元素,则返回-1。

21、int lastIndexOf(Object o,int index);   返回此向量中最后一次出现的指定元素的索引,从index处逆向搜索,如果未找到该元素,则返回-1.

22、int lastIndexOf(Object o);    返回此向量中最后一次出现的指定元素的索引,如果此向量不包含该元素,则返回-1。

package cn.list.demo;

import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

public class VectorDemo {
	public static void main(String[] args)
	{
		
		Vector v=new Vector();
		
		v.addElement("abc1");
		v.addElement("abc2");
		v.addElement("abc3");
		v.addElement("abc4");
		v.addElement("abc1");
		v.addElement("abc2");
		v.addElement("abc3");
		v.addElement("abc4");
		
		System.out.println(v.indexOf("abc3"));
		System.out.println(v.indexOf("abc3",3));
		
		System.out.println(v.lastIndexOf("abc3"));
		System.out.println(v.lastIndexOf("abc3",3));
	}
}
23、boolean isEmpty();  测试此向量是否不包含组件。

24、void clear();    从此向量中移除所有元素。

package cn.list.demo;

import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

public class VectorDemo {
	public static void main(String[] args)
	{
		
		Vector v=new Vector();
		
		v.addElement("abc1");
		v.addElement("abc2");
		v.addElement("abc3");
		v.addElement("abc4");
		v.addElement("abc1");
		v.addElement("abc2");
		v.addElement("abc3");
		v.addElement("abc4");
		
		System.out.println(v.isEmpty());  // 非空输出false
		v.clear();
		System.out.println(v.isEmpty());  // 空输出true
	}
}
25、E remove(int index);  移除此向量中指定位置的 元素

26、boolean remove(Object o);  移除此向量中指定元素的第一个匹配项,如果向量不包含该元素,则元素保持不变。

27、boolean removeAll(Collection c);  从此向量中移除包含在指定Collection中的所有元素。

28、void removeAllElements();   从此向量中移除全部组件,并将其大小设置为零。

29、boolean removeElement(Object obj);  从此向量中移除变量的第一个(索引最小的)匹配项。

30、void removeElementAt(int index);      删除指定索引处的组件

package cn.list.demo;

import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

public class VectorDemo {
	public static void main(String[] args)
	{
		
		Vector v=new Vector();
		
		v.addElement("abc1");
		v.addElement("abc2");
		v.addElement("abc3");
		v.addElement("abc4");
		v.addElement("abc1");
		v.addElement("abc2");
		v.addElement("abc3");
		v.addElement("abc4");
		
		System.out.println(v.removeElement("abc1"));
		System.out.println(v);
		
		Vector vec=new Vector();
		vec.add("abc4");
		
		System.out.println(v.remove(2));
		System.out.println(v);
		
		System.out.println(v.remove("abc2"));
		System.out.println(v);
		
		System.out.println(v.removeAll(vec));
		System.out.println(v);
		
		v.removeAllElements();
		System.out.println(v);
	}
}
31、protected void removeRange(int fromIndex,int toIndex);   从此list中移除位于formIndex(包括)与toIndex(不包括)之间的所有元素。

32、boolean retainAll(Collection c);    在此向量中仅保留包含在指定Collection中的元素。

package cn.list.demo;

import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

public class VectorDemo {
	public static void main(String[] args)
	{
		
		Vector v=new Vector();
		
		v.addElement("abc1");
		v.addElement("abc2");
		v.addElement("abc3");
		v.addElement("abc4");
		v.addElement("abc1");
		v.addElement("abc2");
		v.addElement("abc3");
		v.addElement("abc4");
		
		Vector vec=new Vector();
		
		vec.add("abc2");
		vec.add("abc4");
		
		System.out.println(v.retainAll(vec));
		System.out.println(v);
	}
}

此外,还有一些其他方法,这里不再一一列举。有兴趣的可以通过API的介绍自己做练习。

      



  • 27
    点赞
  • 204
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值