一、简介
Vector是一个线程安全的动态数组,在添加和删除元素时可以自动调整大小。Vector实现了List接口,所以它可以像ArrayList一样存储元素。与ArrayList相比,Vector的一个主要优点是它是同步的,因此它是线程安全的。这就意味着在多个线程同时访问同一个Vector对象时,Vector能够正确协调访问,以避免数据损坏。
二、创建Vector对象
可以使用以下方式来创建一个Vector对象:
Vector<String> vector1 = new Vector<>(); Vector<Integer> vector2 = new Vector<>(10); Vector<Double> vector3 = new Vector<>(5, 2);
上面的代码中,第一个Vector对象没有指定初始容量,第二个Vector对象具有初始容量10,而第三个Vector对象具有初始容量5,以及每次增加2个元素的增量。
三、添加元素
可以使用以下方法来向Vector中添加元素:
Vector<Integer> vector = new Vector<>(); vector.add(1); vector.add(2); vector.add(3); vector.add(4); vector.add(5);
上面的代码将添加整数1到5到vector中。由于Vector可以自动调整大小,因此不需要担心添加太多元素。可以使用addAll()方法添加多个元素:
Vector<String> vector1 = new Vector<>(); vector1.add("s1"); vector1.add("s2"); Vector<String> vector2 = new Vector<>(); vector2.add("s3"); vector2.add("s4"); vector1.addAll(vector2);
在上面的代码段中,vector1现在具有4个String元素:s1,s2,s3和s4。
四、获取元素
可以使用以下方式来获取Vector中的元素:
Vector<String> vector = new Vector<>(); vector.add("s1"); vector.add("s2"); vector.add("s3"); vector.add("s4"); String str1 = vector.get(0); String str2 = vector.elementAt(1);
上面的代码中,str1将获取索引0处的String元素,而str2将获取索引1处的String元素。区别在于get()方法返回一个Object对象,而elementAt()方法返回一个指定索引的元素。
五、删除元素
可以使用以下方式来从Vector中删除元素:
Vector<String> vector = new Vector<>(); vector.add("s1"); vector.add("s2"); vector.add("s3"); vector.add("s4"); vector.remove(1); vector.remove("s4"); vector.removeAll(vector);
上面的代码中,第一个remove()方法将删除索引1处的元素,第二个remove()方法将删除包含字符串"s4"的元素,而最后一个removeAll()方法将从vector中删除所有元素。
六、遍历Vector
可以使用以下方法来遍历Vector:
Vector<String> vector = new Vector<>(); vector.add("s1"); vector.add("s2"); vector.add("s3"); vector.add("s4"); for (String str : vector) { System.out.println(str); }
上面的代码将打印出vector中的所有String元素。还可以使用迭代器来遍历Vector:
Vector<String> vector = new Vector<>(); vector.add("s1"); vector.add("s2"); vector.add("s3"); vector.add("s4"); Iterator<String> iterator = vector.iterator(); while (iterator.hasNext()) { String str = iterator.next(); System.out.println(str); }
七、与ArrayList的比较
与ArrayList相比,Vector有以下几个区别:
1、Vector是线程安全的,而ArrayList不是。
2、每次向Vector添加元素时,如果Vector没有足够的空间,Vector的大小将自动增加。但是,在ArrayList中,当ArrayList没有足够的空间时,它必须重新分配内存块,并将元素从旧块复制到新块中。
使用Vector的一个缺点是效率较低,因为Vector必须在每个操作上保证同步。