Vector方法是同步的,线程安全
ArrayList方法是非同步的,效率较高
向量变量的声明格式
Vector<向量元素的数据类型> 变量名;
示例
Vector vs;
创建向量实例对象
Vector vs = new Vector( );
在Java中,Vector<Object>
是一个泛型Vector
,它专门用于存储Object
类型或其子类型的对象。当你声明一个Vector<Object>
并初始化它时,你创建了一个可以存储任何类型对象的Vector
(因为所有类都是Object
类的子类)。
但是,由于你使用的是原始类型Object
作为泛型参数,所以在向Vector
中添加或从中检索对象时,你需要进行显式的类型转换,除非你确信你知道存储在其中的对象的实际类型。
以下是如何声明并初始化一个Vector<Object>
以及如何使用它的示例:
import java.util.Vector;
public class VectorExample {
public static void main(String[] args) {
Vector<Object> vo = new Vector<Object>(); // 或者使用钻石操作符: new Vector<>()
// 向Vector中添加元素
vo.add("Hello"); // 这是一个String对象,它是Object的子类
vo.add(42); // 这是一个Integer对象,它也是Object的子类
vo.add(1.23); // 这是一个Double对象,同样是Object的子类
// 遍历并打印Vector中的元素
for (Object obj : vo) {
// 由于我们不知道对象的实际类型,我们可以打印它的字符串表示
System.out.println(obj.toString());
// 如果你知道某个元素的具体类型,你可以进行显式的类型转换
if (obj instanceof String) {
String str = (String) obj;
System.out.println("String value: " + str);
} else if (obj instanceof Integer) {
Integer num = (Integer) obj;
System.out.println("Integer value: " + num);
}
// ... 其他类型检查
}
}
}
在这个例子中,我们向Vector<Object>
中添加了一个字符串、一个整数和一个双精度浮点数。当我们遍历Vector
并打印元素时,我们使用了Object
的toString()
方法(因为所有对象都继承自Object
类,并因此继承了这个方法)。如果我们知道某个元素的具体类型,我们可以使用instanceof
操作符来检查它,并进行显式的类型转换。
注意,从Java 7开始,你可以使用“钻石操作符”(<>
)来自动推断泛型类型,所以new Vector<Object>()
可以简写为new Vector<>()
。然而,在Java 5和6中,你仍然需要明确指定泛型参数。
ArrayList 中的元素实际上是对象,在以上实例中,数组列表元素都是字符串 String 类型。
如果我们要存储其他类型,而 只能为引用数据类型,这时我们就需要使用到基本类型的包装类。
以下是 ArrayList
的一些常用方法:
-
add(E e)
在列表的末尾追加指定的元素。 -
add(int index, E element)
在列表的指定位置插入指定的元素。 -
remove(int index)
移除列表中指定位置的元素。 -
remove(Object o)
移除列表中首次出现的指定元素(如果存在)。 -
get(int index)
返回列表中指定位置的元素。 -
set(int index, E element)
用指定的元素替换列表中指定位置的元素。 -
size()
返回列表中的元素数量。 -
isEmpty()
如果列表不包含元素,则返回true
。 -
contains(Object o)
如果列表包含指定的元素,则返回true
。 -
indexOf(Object o)
返回指定元素在列表中首次出现的索引;如果列表不包含此元素,则返回-1
。 -
lastIndexOf(Object o)
返回指定元素在列表中最后一次出现的索引;如果列表不包含此元素,则返回-1
。 -
clear()
从列表中移除所有元素。 -
toArray()
返回一个包含列表中所有元素的数组。 -
subList(int fromIndex, int toIndex)
返回列表中指定的fromIndex
(包括)和toIndex
(不包括)之间的部分视图。 -
iterator()
返回列表中元素的列表迭代器(按元素的插入顺序)。 -
listIterator()
返回列表中元素的列表迭代器(按元素的插入顺序)。 -
listIterator(int index)
返回列表中元素的列表迭代器(按元素的插入顺序),从列表的指定位置开始。 -
addAll(Collection<? extends E> c)
将指定集合中的所有元素添加到列表的末尾。 -
addAll(int index, Collection<? extends E> c)
从指定的位置开始,将指定集合中的所有元素插入到此列表中。 -
retainAll(Collection<?> c)
仅保留此列表中那些也包含在指定集合中的元素(可选操作)。 -
removeAll(Collection<?> c)
从此列表中移除指定集合中包含的所有元素(可选操作)。 -
containsAll(Collection<?> c)
如果此列表包含指定集合中的所有元素,则返回true
。 -
equals(Object o)
比较指定的对象与此列表是否相等。 -
hashCode()
返回此列表的哈希码值。
请注意,ArrayList
中的元素是有序的,并且允许有重复的元素。如果需要一个不包含重复元素的列表,可以使用 HashSet
或者 LinkedHashSet
(保留插入顺序)。