2009-06-05 181 views

回答

3

你需要Vector類提供的同步嗎?如果不是,那麼你不想使用Vector類。 (如果僅允許使用JList,則使用ArrayList代替)。在最近的JVM版本中,無爭用同步的成本爲,方式爲,比原來低。不過,沒有理由使用不必要的同步。

它看起來像凱西凡斯通可能是指在Vector額外的同步。

注意仔細public JList(Vector<?> listData)的JavaDoc:

創建的模型直接引用給定Vector。試圖在構造列表後修改 向量會導致未定義的行爲。

不幸的是,public JList(Object[] listData)的JavaDoc具有同樣的警告:

創建的模型給定的數組直接引用。嘗試在構造列表後修改 數組會導致未定義的行爲。

你必須決定是否有一些人在決定該Vector是在同一個方法以後有用的任何可能性,從而改變這樣的代碼:

Vector vec = new Vector<String>(LinkedHashMap.keySet()); 
jList1.setListData(vec); 
// Other stuff with Vector 
vec.add(....); // Adding some data type that fits in the Vector 

...或當然的了與數組構造函數版本相同的更改。

+0

可能總是在安全的一邊,並實例化新的Vector/object ...除非你真的不能創建一個額外的對象 – 2009-06-05 01:45:05

1

看看在JList類中兩個setListData方法的實現,你會發現它並不重要。 我寧願第一個,因爲沒有必要再涉及另一個集合(矢量)

相關問題