知っていると便利な章

4.8. Hashtable と Vector

HashtableとVectorは互換性を保つために残されているといっても過言ではないので、積極的に使う必要性はありません。

HashtableとHashMapの違いは同期化(synchronized)の有無です。

『Before』

Map<Integer, String> m = new Hashtable<>(...);

『After』

Map<Integer, String> m = Collections.synchronizedMap(new HashMap<>(...));

synchronizedMapによって同期化がなされます。つまりマルチスレッドに対応します。 HashMapを同期化することによってHashtableと全く同じ機能になります。

VectorとArrayList の違いは同期化の有無です。

『Before』

List<String> list = new Vector<>(...);

『After』

List<String> list = Collections.synchronizedList(new ArrayList<>(...));

ArrayList を同期化することによってVectorと全く同じ機能になります。

同じように、SetやCollectionも同期化することができます。

// 同期化コレクション
Collection<String> c = Collections.synchronizedCollection(new ArrayList<>());

// 同期化セット
Set<String> s = Collections.synchronizedSet(new HashSet<>());

< 前のページへ

Pagetop