如何在“地图”中包含的“集合”中添加值?

时间:2019-10-05 08:50:17

标签: java collections

我有收藏集

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

我有添加新对象的“保存”方法

public void save(Meal meal)

我需要的逻辑是使用merge()或computeIfAbsent()方法将此餐添加到SET中。 例如,当我尝试添加新的餐时,我应该从餐中获取一些密钥(带有吸气剂的私有字段),并将餐添加到该对中。 怎么做?

1 个答案:

答案 0 :(得分:0)

第一个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);