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的介绍自己做练习。

Java中vector的使用方法,布布扣,bubuko.com

时间: 2024-11-03 05:31:09

Java中vector的使用方法的相关文章

Java中Vector和ArrayList的区别

首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复. 3个具体实现类的相关区别如下: ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组

Java中Integer类的方法

字段摘要 static int MAX_VALUE              保持 int 类型的最大值的常量可取的值为 231-1. static int MIN_VALUE              保持 int 类型的最小值的常量可取的值为 -231. static int SIZE              以二进制补码形式表示 int 值的位数. static Class<Integer> TYPE              表示基本类型 int 的 Class 实例. 构造方法摘要

java中的jdbc连接数据库方法及应用

jdbc连接数据库的口诀:猪脸特直观 import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Demo03 { public static void main(String[] args) thr

java中substring的使用方法

str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str: str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex開始至endIndex结束时的字符串,并将其赋值给str; 下面是一段演示程序: public class StringDemo{ public static void main(String agrs[]){ Str

转- 关于时间,日期,星期,月份的算法(Java中Calendar的使用方法)

package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class CalendarDemo { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); System.out.println("现在时间

Java中循环声明变量方法

Java循环声明变量 之前想这样做,但是网上一直搜索不到,下面是我的方式 项目中 // 得到需要查询外表的数量,然后分别创建缓存,插入数据多的时候如果编码在缓存里面,就不需要再去查询数据库了.key:code/value:pk // 根据"数据来源"有多少非空的 就创建几个,使用 "数据来源字段"+Cache 当cacheMap的key Map<String, Map<String, String>> cacheMap =new HashMa

关于时间,日期,星期,月份的算法(Java中Calendar的使用方法)(一)

package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class CalendarDemo { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); System.out.println("现在时间

java中字符串切割的方法总结

StringTokenizer最快 ,基本已经不用了,除非在某些需要效率的场合.Scanner最慢. String和Pattern速度差不多.Pattern稍快些. String和Pattern的split 方法效率相当,常用 public   static   void  main(String [] args){ long  start = System.currentTimeMillis(); for ( int  i= 0 ;i< 100000 ;i++){ test1(); } lon

java中vector和array区别

java中vector和数组非常类似,两者之间也经常成对出现,下面是两者的比较: 1.数组:java arrays的元素个数不能下标越界,从很大程度上保证了java程序的安全性,但创建时必须指定数组的大小,并不能再改变. 2.vector:对比于array,当更多的元素被加入进来以至超出其容量时,vector的size会动态增长,而array容量是定死的.同时,vector在删除一些元素后,其所有下标大于被删除元素的元素都依次前移,并获得新下标比原来的小了).