Показать сообщение отдельно
Непрочитано 25.12.2016, 11:22   #5

По умолчанию Re: LinkedHashMap в эффекте

Цитата:
Сообщение от Anikey Посмотреть сообщение
Нет, не словишь.
Если нечего удалять вернет null, как и в случае putIfAbsent, etc...
Как подметил Mangol ConcurrentModificationException - мы можем выхватить, только если удаляем напрямую из коллекции - во время работы итератора. Нужно использовать метод итератора remove(), чтобы было корректно.
remove(); Итератора не спасет, все равно получим ConcurrentModificationException.
П.1 Не только удаляем, при любом добавлении либо удалении, получим ConcurrentModificationException.
На сколько я помню там есть проверка.
int mod=correctMod;
if(mod != correctMod)
привет ConcurrentModificationException;

Добавлено через 10 минут
Цитата:
Сообщение от finfan Посмотреть сообщение
Мапа работает на одного игрока (один игрок управляет своей мапой) и содержит в себе данные на других (на ком лежит эффект). Накладывая эффект на очередную жертву, мапа обновляется и удаляется в зависимости от максимального окл-ва наложений эффекта:
Например, если эффект можно наложить лишь на 3 цели - одним кастером. При наложении на 4-ую, из мапы убирается 1 товарищ (и эффект с него тоже снимается) и добавляется другой.
А вообще.... Если боишься что влетит 2 потока, и что то не правильно добавится - удалиться. Используй ConcurrentHashMap<>();

Ну если на крайний случай map = HashMap<>();
//write code;
synchronized(map) // mutex
{
//write code;
}
//write code;
__________________

Последний раз редактировалось Mangol; 25.12.2016 в 11:44. Причина: Добавлено сообщение
Mangol вне форума Отправить сообщение для Mangol с помощью ICQ Ответить с цитированием
Сказали спасибо: