@prizrak39

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

В качестве значения в ConcurrentHashMap находится список - List.
Необходимо модифицировать - добавить еще одно значение. При попытке сделать так - Map.get(i).add(value) происходит ошибка java.lang.UnsupportedOperationException. Я понимаю что, что данный список модифицировать потокобезопасным способом., но как правильно сделать не совсем понимаю.
Прошу помочь.
  • Вопрос задан
  • 77 просмотров
Решения вопроса 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
Интерфейс 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).
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы