Время выполнения указывает, что исключение возникает при предоставлении temp = keysit.next(). Я думал, что об этом позаботились, когда я переопределял keysit = keys.iterator() во второй раз, но, возможно, мне не хватает смысла. Какие-либо предложения?ConcurentModificationException при использовании Set
Map<Integer, Set<String>> lhm = new LinkedHashMap<Integer, Set<String>>();
public void sortMap() {
Set<Integer> keys = hm.keySet();
Iterator<Integer> keysit;
int iterations = keys.size();
int smallest;
int temp;
for(int i=0; i<iterations; i++) {
keysit = keys.iterator();
smallest = keysit.next();
keysit = keys.iterator();
while(keysit.hasNext()) {
temp = keysit.next();
if(temp<smallest)
smallest = temp;
lhm.put(smallest, lhm.get(smallest));
keys.remove(smallest);
}
}
System.out.println(lhm);
}
безопасность Нить не проблема, он будет бросать ConcurrentModificationException в однопоточных приложениях точно так же. Проблема в том, что вы удаляете элементы из набора во время итерации по нему. Вместо этого вы должны использовать метод 'remove()' итератора, если он его поддерживает. –