一、前言
在Java开发中,常常涉及到数据结构的使用。其中,常使用的一种数据结构是Vector。Vector类在Java中属于集合类,是一种线程安全的动态数组,实现了List接口,具有数组的相关特性,支持自动增长。
本文将从以下几个方面对Java Vector类展开介绍:Vector的定义、创建、添加元素、删除元素、获取元素、遍历元素、扩容机制、线程安全等。通过本文的介绍,读者应该能够对Vector类有更加深入的理解。
二、Vector类的基本使用方法
1. Vector的定义与创建
//定义Vector对象 Vector<String> vec = new Vector<>(); //创建Vector对象 vec.add("str1"); vec.add("str2"); vec.add("str3");
Vector被定义为一个带有泛型参数的类,类名后面的<String>是泛型——Vector的元素类型为String。在创建对象时,可以通过add方法向创建好的Vector中添加元素。
2. 向Vector中添加元素
vec.add("str4");
可以使用Vector的add方法将新的元素加入到Vector中。而如果添加的值已经存在,Vector会将该值添加到数组末尾。
3. 从Vector中删除元素
String str = vec.remove(2);
可以使用Vector的remove方法从数组中删除指定位置的元素。方法返回被删除的元素。
4. 获取Vector中的元素
for (int i=0;i<vec.size();i++) { System.out.println(vec.get(i)); }
可以使用Vector的get方法获取数组中指定位置的元素。我们可以通过遍历数组,使用for循环配合get方法取出数组中的所有元素。
5. 遍历Vector中的元素
for (String str : vec) { System.out.println(str); }
使用foreach循环遍历Vector中的元素。
6. Vector的扩容机制
在默认情况下,当向Vector中添加元素时,如果Vector的内部数组已经满了,Vector会将其内部数组的大小扩大一倍。
Vector<Integer> vector = new Vector<>(); for(int i = 0; i < 11; i++) { vector.add(i); System.out.println("Element " + i + " added to vector. Current size of Vector: " + vector.size()); }
上述代码中,向一个空的Vector中添加11个元素。当添加第11个元素时,Vector的大小为20,这是因为在第10个元素被添加到Vector时,由于Vector内部数组大小扩容,容量变为20。
7. Vector的线程安全
Vector类是线程安全的,因为它包含了同步方法来确保操作的原子性。
Vector<String> vec = new Vector<>(); vec.add("str1"); vec.add("str2"); vec.add("str3"); new Thread(() -> { for (int i=0;i<10;i++) { vec.add("new string Element" + i); } }).start(); new Thread(() -> { while (true) { if (vec.size() > 3) { vec.remove(1); } } }).start();
上述代码中,主线程创建一个大小为3的Vector,并向其中添加三个元素。随后启动两个新线程,一个向Vector中添加10个新的元素,另一个在Vector中删除位置为1的元素。此时,我们可以看到,在两个线程同时运行时,Vector依然可以正常运行,不会导致数据错乱。
三、小结
本文介绍了Java中Vector类的基本用法,包括定义与创建、添加元素、删除元素、获取元素、遍历元素、扩容机制、线程安全等。其中,线程安全是Vector独有的一项特性,它具有与ArrayList相同的特点,但可以安全地在多线程应用程序中使用。值得注意的是,Java官方建议在使用Vector时,仅在多线程情况下使用,否则建议使用ArrayList作为代替。