«Размер или ноль» значения многозначного hashmap - PullRequest
0 голосов
/ 27 мая 2019

У меня многозначное значение Hashmap (технически LinkedHashMap):

private LinkedHashMap<String, ArrayList<BodyPart>> bodyParts  = new LinkedHashMap<>();

Я хочу найти количество значений, связанных с данным ключом. Однако bodyParts.get("sample key") возвращает null, если ключ отсутствует, тогда как я хочу, чтобы он возвращал 0 (поскольку с этим ключом связаны нулевые значения).

Я мог бы защитить это в if заявлении:

int numberOfValues;
if(bodyParts.containsKey("sample"){
    numberOfValues = bodyParts.get("sample").size();
} 

но мне было интересно, есть ли более простой / лучший способ сделать это? Я прочитал документацию для computeIfPresent, но, честно говоря, не совсем понял.

Ответы [ 2 ]

2 голосов
/ 27 мая 2019

Использовать Map.getOrDefault(Object key, V defaultValue).

Возвращает значение, на которое отображается указанный key, или defaultValue, если эта карта не содержит сопоставления для ключа.

0 голосов
/ 27 мая 2019

Вы можете использовать getOrDefault метод Java Map interface.

Позволяет установить значение по умолчанию, которое будет возвращаться в случае, если значение, соответствующее ключу, не найдено.Таким образом, в случае использования, упомянутом выше, вы можете использовать: numberOfValues = bodyParts.getOrDefault("sample", new ArrayList<BodyPart>()).size();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...