synchronizedTreeMap が存在しない2009年09月03日 12時55分30秒

Java に Collections が追加された時に、加えられたデータ構造体は排他処理がなされていない。古い Hashtable では synchronized を用いて排他処理がなされているのに対し、同等の HashSet では行なわれていない。

そこで、JavaDoc では Collections の静的関数を用いて


Map m = Collections.synchronizedMap(new HashMap(...));

の様にして、排他制御を行なうデータ構造を生成出来るとしている。

Java 1.6 の Collections が提供する関数は以下の通りだ。


static <T> Collection<T> synchronizedCollection(Collection<T> c)
static <T> List<T> synchronizedList(List<T> list)
static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)
static <T> Set<T> synchronizedSet(Set<T> s)
static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m)
static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s)

一見便利そうには見える。しかし、これらの型以外にも様々な Map や Set 型がある。TreeMap のソートする性質を利用しつつ Map を使おうとすると、意図したクラスを返せないのでこれらのラッパー関数は使えない。

中途半端に関数が準備されていて、痒いところに微妙に手が届かない。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2009/09/03/4560179/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。