Как добавить значения в «Набор», включенный в «Карту»? - PullRequest
0 голосов
/ 05 октября 2019

У меня есть коллекция:

private Map<Integer,Set<Meal>> storage = new ConcurrentHashMap<>();

У меня есть метод «сохранения» для добавления новых объектов

public void save(Meal meal)

Мне нужна логика - добавить эту еду в набор с помощью слияния() или метод computeIfAbsent (). Например - когда я пытаюсь добавить новую еду, я должен получить какой-то ключ от еды (личное поле с геттером), и еду следует добавить в набор этой пары. Как это можно сделать?

1 Ответ

0 голосов
/ 05 октября 2019

сначала computeIfAbsent (таким образом, гарантируется, что ваш набор никогда не будет нулевым), затем сразу add

    class Meal {
        final int key;

        Meal(int key) {
            this.key = key;
        }
    }

    Map<Integer, Set<Meal>> storage = new ConcurrentHashMap<>();

    Consumer<Meal> save = (meal) -> storage
            .computeIfAbsent(meal.key, (Integer key) -> new HashSet<>())
            .add(meal);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...