我有收藏集
private Map<Integer,Set<Meal>> storage = new ConcurrentHashMap<>();
我有添加新对象的“保存”方法
public void save(Meal meal)
我需要的逻辑是使用merge()或computeIfAbsent()方法将此餐添加到SET中。 例如,当我尝试添加新的餐时,我应该从餐中获取一些密钥(带有吸气剂的私有字段),并将餐添加到该对中。 怎么做?
答案 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);