私が達成しようとしているのは次のとおりです。 a のキーと値の両方を繰り返し処理しているときに、このリストから要素を削除して元に戻しMultimap<K,V>
たいと考えています。私が試したアプローチはすべて、ConcurrentModificationException になります。この削除して戻すアプローチは、バックトラック検索を実装するために必要です (こちらを参照してください:ヒューリスティックを使用したバックトラック検索の実装? )
これは次のようになります。
Multimap<K,V> multimap = HashMultimap.create();
Iterator keyIterator = multimap.keySet().iterator();
while(keyIterator.hasNext()) {
K key = keyIterator.next();
Collection values = multimap.get(key);
Iterator valueIterator = values.iterator();
while(valueIterator.hasNext()) {
V myValue = valueIterator.next();
if(special) {
valueIterator.remove();
keyIterator.remove();
// recursion
// put back Collection with key but without myValue <-- HOW?
}
}
}