@prizrak39

Как правильно модифицировать список внутри ConcurrentHashMap?

В качестве значения в ConcurrentHashMap находится список - List.
Необходимо модифицировать - добавить еще одно значение. При попытке сделать так - Map.get(i).add(value) происходит ошибка java.lang.UnsupportedOperationException. Я понимаю что, что данный список модифицировать потокобезопасным способом., но как правильно сделать не совсем понимаю.
Прошу помочь.
  • Вопрос задан
  • 166 просмотров
Решения вопроса 1
EugeneP2
@EugeneP2
Java Dev
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Function;

...
public final Map<Integer, List<String>> map = new ConcurrentHashMap<>();

public final Function<Integer, List<String>> mapFun = i -> new CopyOnWriteArrayList<>();

...
map.computeIfAbsent(1, mapFun).add("a");
map.computeIfAbsent(1, mapFun).add("b");
map.computeIfAbsent(1, mapFun).add("c");
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
alfss
@alfss
https://career.habr.com/alfss
Интерфейс List не имеет операции add.
Для пополнения списка, это должен быть ArrayList, LinkedList , Vector. https://en.wikiversity.org/wiki/Java_Collections_O...

https://docs.oracle.com/javase/8/docs/api/java/uti...
Appends the specified element to the end of this list (optional operation).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
19 апр. 2024, в 17:06
15000 руб./за проект
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект