如何在 Map 中用 computeIfAbsent() 替换 get() 函数?

问题描述

作为 Sonarcloud 分析的结果,有人建议我应该在定义为 Map 的侦听器上使用 computeIfAbsent() 方法而不是 get()。由于我不熟悉这种方法,有谁知道如何正确重构以下 java 代码指示的方法,以便正确使用 computeIfAbsent() 而不是 get()?

public void addListener(String event,EventListener listener) {
    List<EventListener> eventListeners = listeners.get(event);
    if (eventListeners == null) {
        eventListeners = new ArrayList<>();
        listeners.put(event,eventListeners);
    }
    eventListeners.add(listener);
}

解决方法

这就是你所追求的?

listeners.computeIfAbsent(event,ignoreMe -> new ArrayList<>()).add(listener);