2011-04-23 65 views
3
package myjava; 
import java.util.*; 
public class Vectors { 
    public static void vec() { 
     Vector v = new Vector(); 
    } 
} 

我正在使用net beans IDE 6.9.1,它告诉我这是一个“Obsolete Collection”。 除了显而易见的,它是过时的,我会用它在Java? 我真的很兴奋使用它们..Java 6 SE是否过时了吗?

+1

几乎同样的问题http://stackoverflow.com/questions/1386275/why-java-vector-class-is-considered-obsolete-or-deprecated – 2011-04-23 11:21:11

回答

5

使用Vector已被阻止一段时间了。它们被替换为ArrayList,它具有或多或少相同的功能(但不同步)。

+0

他们的弃用是非正式的,不正式的。矢量尚未在源中标记为@Deprecated。 – 2011-04-23 11:19:43

+2

因此,如果堆栈是矢量的子类,那么堆栈也会被非正式地弃用? – Aaron 2011-04-23 11:22:50

+1

@Matthew:没错。请参阅http://download.oracle.com/javase/6/docs/api/java/util/Stack.html - 没有弃用标记,尽管有一条评论将您推向ArrayDeque方向。 – 2011-04-23 11:24:18

2

它通常已经过时了,是的。就它是什么而言,它与具有略微不同的增长特征的ArrayList相同;矢量也在每种方法上同步,这意味着每次调用同步时都会有(可能的)性能损失。在Java 6上,同步远不及以前的Java版本,但结果仍然是ArrayList应该有一个STRONG偏好,而不是Vector。

同样,你应该更喜欢HashMap到HashTable。

+1

Hashtable是Hashtable的老永恒的错误 – ouertani 2014-05-06 13:51:25

+0

是的,不够公平。但它仍然是Hashtable - 因为没有人应该使用它,所以实际的Camelcase究竟是什么并不重要。使用Map和HashMap。 :) – 2014-05-14 16:36:28

2

注意上面的答案,您还应该使用ArrayList的通用版本,因为非通用版本仅用于Java 1.4(4)支持。

例子:

//ArrayList of integers 
ArrayList<Integer> list = new ArrayList<Integer>(); 
2

java.util.Vector中或java.util.Hashtable中,仍然支持,但这些类是过时由JDK1.2集合类,并可能不应该在新的使用发展。