我有一个多值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
的文档,但实际上,我并没有真正理解它。
答案 0 :(得分:2)
使用Map.getOrDefault(Object key, V defaultValue)
。
返回指定的
key
所映射的值;如果此映射不包含键的映射,则返回defaultValue
。
答案 1 :(得分:0)
您可以使用Java Map接口的getOrDefault
方法。
它允许您设置默认值,如果未找到与键对应的值,将返回该默认值。因此,在上述用例中,您可以使用:
numberOfValues = bodyParts.getOrDefault("sample", new ArrayList<BodyPart>()).size();