Iteratorは、for文でMapの全要素に

アクセスするときに使用すると

便利な機能です。


Mapにいくつか要素がはいっているとします。

全要素を表示するには、以下のようにします。


Set set = map.keySet();

for(Iterator i = set.iterator(); i.hasNext();){

System.out.println(map.get(i.next());

}


しかし、Iteratorをスレッド間で使用する場合、

注意しなければならないことがあります。


それは、Iteratorでfor文をまわしている間に

put等でMapに要素を追加することです。


要素を変更すると、

java.util.ConcurrentModificationException

が投げられてしまいます。


これを回避するには、Iteratorを使用する場所と

putをする場所で、Mapのインスタンスに対して

synchronizedしてあげます。



// Iteratorを使用する場所

synchronized(map){

上の赤い部分。

}


// putする場所

synchronized(map){

map.put( key, value);

}


こうすればOKです。

今日はこれまで。

でわでわ( ̄▽ ̄)ノ♪