プロが教える店舗&オフィスのセキュリティ対策術

すみません、どなたか教えて下さい。

あるListからMapを作成したく、同じkeyが存在する場合、valueのListへ値を追加したいですのですがConcurrentModificationExceptionエラーが返されてしまいます。エラーを返さないように変数を使い分け工夫したつもりですが。。。((1)でmapAにもaddされている!?)他に良い方法はないでしょうか?

Map mapA = new TreeMap();
Map mapB = new TreeMap();
Iterator it = listA.iterator();
while (it.hasNext()) {
Bean bean = (Bean)it.next();
List mapvaluelist = new ArrayList();
if (mapA.size()==0){
mapvaluelist.add(bean);
mapA.put(bean.getName(),mapvaluelist);
}else{
if (mapB.size()!=0){
mapA = mapB;
}
Set keyset = mapA.keySet();
Iterator itmap = keyset.iterator();
while (itmap.hasNext()){
String mapkey = (String)itmap.next();
if (bean.getName().equals(mapkey)){
mapvaluelist = (List)mapA.get(mapkey);
mapvaluelist.add(bean);
mapB.put(bean.getName(),mapvaluelist); (1)
}else{
mapvaluelist.clear();
mapvaluelist.add(bean);
mapB.put(bean.getName(),mapvaluelist);
}
}
}
}

A 回答 (1件)

>if (mapB.size()!=0){


>mapA = mapB;
>}

ここがおかしいのでは?

参考URL:http://javafaq.jp/S027.html#S027-01
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。
Mapがよくわかっていなかったようです。もう一度勉強しなおします・・・。

お礼日時:2006/09/19 14:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!