多值哈希图的值的“大小或零”

时间:2019-05-27 12:13:34

标签: java collections hashmap

我有一个多值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 个答案:

答案 0 :(得分:2)

使用Map.getOrDefault(Object key, V defaultValue)

  

返回指定的key所映射的值;如果此映射不包含键的映射,则返回defaultValue

答案 1 :(得分:0)

您可以使用Java Map接口的getOrDefault方法。

它允许您设置默认值,如果未找到与键对应的值,将返回该默认值。因此,在上述用例中,您可以使用:  numberOfValues = bodyParts.getOrDefault("sample", new ArrayList<BodyPart>()).size();