2011-04-23 64 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集合類,並可能不應該在新的使用發展。