提问人:Aaron 提问时间:4/23/2011 更新时间:4/23/2011 访问量:12691
Java 6 SE 向量过时了吗?
Java 6 SE are vectors obsolete?
问:
package myjava;
import java.util.*;
public class Vectors {
public static void vec() {
Vector v = new Vector();
}
}
我正在使用 net beans IDE 6.9.1,它告诉我这是一个“过时的集合”。 除了显而易见的,它已经过时了,我会在 Java 中使用它吗? 我对使用它们感到非常兴奋。
答:
2赞
Joseph Ottinger
4/23/2011
#1
它通常已经过时了,是的。就其内容而言,它与 ArrayList 相同,但增长特征略有不同;Vector 也会在每个方法上同步,这意味着每次调用同步都会有(可能的)性能损失。在 Java 6 上,同步远不如以前版本的 Java 那么昂贵,但结果仍然是应该对 ArrayList 而不是 Vector 有强烈的偏好。
同样,您应该更喜欢 HashMap 而不是 HashTable。
评论
1赞
ouertani
5/6/2014
HashTable 是 Hashtable 的永恒错误
0赞
Joseph Ottinger
5/15/2014
是的,很公平。但它仍然是 Hashtable - 因为没有人应该使用它,所以实际的骆驼箱是什么并不重要。使用 Map 和 HashMap。:)
5赞
MAK
4/23/2011
#2
一段时间以来,一直不鼓励使用 s。它们被替换为 ,它或多或少具有相同的功能(但不同步)。Vector
ArrayList
评论
0赞
Joseph Ottinger
4/23/2011
他们的弃用是非正式的,而不是正式的。Vector 尚未在源中标记为@Deprecated。
2赞
Aaron
4/23/2011
因此,如果堆栈是向量的子类,那么堆栈是否也被非正式地弃用了?
1赞
Joseph Ottinger
4/23/2011
@Matthew:没错。请参阅 download.oracle.com/javase/6/docs/api/java/util/Stack.html - 没有弃用标签,尽管有一条评论将您推向 ArrayDeque 的方向。
2赞
MAK
4/23/2011
@Matthew:没有。我认为不鼓励使用,因为有一个替代实现是集合框架的一部分。没有备用堆栈实现,因此仍未被视为已弃用。Vector
List
Stack
0赞
MAK
4/23/2011
@JosephOttinger:谢谢,我已经编辑了我的答案,使其更清晰。
2赞
Yet Another Geek
4/23/2011
#3
请注意,您还应该优先使用 ArrayList 的通用版本,因为非通用版本仅适用于 Java 1.4(4) 支持。
例:
//ArrayList of integers
ArrayList<Integer> list = new ArrayList<Integer>();
2赞
Chankey Pathak
4/23/2011
#4
java.util.Vector 或 java.util.Hashtable,虽然仍然受支持,但这些类已被 JDK1.2 集合类淘汰,可能不应该在新的开发中使用。
评论