get(int index)和elementAt(int index)之间有什么区别?

时间:2013-08-15 08:19:33

标签: java collections vector

Vector有两种方法可以将元素放在一个索引处。

Vector<Integer> matrix;
matrix = new Vector<Integer>;
matrix.get(0);
matrix.elementAt(0);

他们似乎在做同样的事情。

3 个答案:

答案 0 :(得分:7)

不同之处在于像Hashtable和Stack这样的Vector是遗留类,它们在1998年的Java 1.2中被重新设计,将被ArrayList取代。

elementAt(int)是遗留方法

get(int)符合15年前添加的List接口。

简而言之,除非你真的需要,否则不要使用Vector。

答案 1 :(得分:7)

他们都做同样的工作。您可以访问明确说明的Javadoc of Vector#elementAt(int)

  

此方法在功能上与get(int)方法(它是List接口的一部分)相同。

好吧,你不应该在新代码中使用Vector了。它是遗留类,很久以前被ArrayList取代。此外,Vector中定义的每个操作都是同步的,这在大多数情况下是不需要的。无论何时需要,您都应该使用Collections.synchronizedList

而且您也无法像在代码中那样创建参数化类型的数组。所以,你的代码甚至都不会编译。

new Vector<Integer>[100];  // This will not compile. Error: Generic Array Creation

答案 2 :(得分:0)

根据文档

  

从Java 2平台v1.2开始,该类被改进以实现List接口,使其成为Java Collections Framework的成员。与新的集合实现不同,Vector是同步的。如果不需要线程安全实现,建议使用ArrayList代替Vector。

以这种方式添加get() method