通过java 8接口改进map中的containsKey

时间:2018-02-01 08:24:21

标签: java dictionary java-8

我有一个名为Time with fields的实体/表格:

Integer id;
Date date;
Integer value;

另一种名为SummaryForm的表单

String title;
String descr;
List<Object> newList;

如何使用Java 8界面提高地图使用率。 现在我有一个if语句:

if (map.containsKey(key)) {
            map.get(key).newList().add(new SummaryForm(time.getDate(), time.getValue()));
        }

有没有简单的方法来改进它以避免if语句,使用map.containsKey? 在我看来,我需要像putIfPresent这样的东西,但似乎只有putIfAbsent方法。

1 个答案:

答案 0 :(得分:6)

由于引入了默认方法(因此保留了向后兼容性),Java 8中有几种新方法可以扩展Map接口。

没有putIfPresent,但有replace()种方法会以这种方式运作。

但是,您似乎在这里寻找computeIfPresent

map.computeIfPresent(key, (k, value) -> {
    value.newList().add(new SummaryForm(time.getDate(), time.getValue());
    return value;
})