#java #hashmap #sonarcloud
#java #хэш — карта #sonarcloud
Вопрос:
в результате анализа Sonarcloud было предложено, чтобы я использовал метод computeIfAbsent() вместо get() для слушателей, который определяется как Map<Строка, список>. Поскольку я не знаком с этим методом, кто-нибудь знает, как правильно реорганизовать метод, указанный в следующем 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);
}
Комментарии:
1. «Поскольку я не знаком с этим методом» — вы читали документ?
2. @Eugene Да, но мне не удалось адаптировать примеры к заданному контексту.
3. покажите, что вы сделали тогда, и с какой конкретной проблемой вы столкнулись
4.
listeners.computeIfAbsent(event, ignoreMe -> new ArrayList<>()).add(event);
5. я не понял, нужно ли мне заменить все тело метода тем, что вы написали, или просто заменить метод get() . мне удалось получить список<EventListener> EventListeners = listeners.computeIfAbsent(событие, k-> новый список массивов<>());
Ответ №1:
Это то, что вам нужно?
listeners.computeIfAbsent(event, ignoreMe -> new ArrayList<>()).add(listener);