java - 通过 java 8 接口(interface)改进 if containsKey in map

标签 java dictionary java-8

我有一个名为 Time 的实体/表单,其中包含字段:

Integer id;
Date date;
Integer value;

还有另一种形式叫做 SummaryForm

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

如何使用 Java 8 界面改进 map 使用。 现在我有一个 if 语句:

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

是否有任何简单的方法可以改进它以避免 if 语句,t 和 map.containsKey? 在我看来,我需要类似 putIfPresent 的东西,但似乎只有一个 putIfAbsent 方法。

最佳答案

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

没有 putIfPresent,但是有 replace() 方法可以那样工作。

但是看起来您正在寻找 computeIfPresent 在这里:

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

关于java - 通过 java 8 接口(interface)改进 if containsKey in map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48558234/

相关文章:

python - 如何在 Python 中使用 pickle 创建持久类

java - 何时初始化具有默认方法的接口(interface)?

java - ForkJoinPool - 为什么程序抛出 OutOfMemoryError?

Java - 如何减小第三方 jar 的大小以减小应用程序的大小

java - JSF 2.0 可以与 Websphere 应用程序服务器版本 7.x 一起使用吗

java - Eclipse Oxygen JVM 错误

java - 按屏幕尺寸更改 LinearLayout

python - 在理解另一个类变量时引用类变量

javascript - 如何创建递归对象树数组以供以后迭代?

Android Studio中的Java URLConnection.setRequestProperty似乎没有做任何事情