插入哈希映射时,是否总是要检查是否存在与要插入的密钥对应的空值?
例如,如果我想跟踪字符出现在单词中的次数,使用hashmap,我是否总是这样做:
if(hashMap.containsKey(ch)){
hashMap.replace(ch, 1+hashMap.get(ch));
}
else{
hashMap.put(ch, 1);
}
Run Code Online (Sandbox Code Playgroud)
或者有一个功能可以为我处理这个?
Ous*_* D. 17
使用merge.
hashMap.merge(ch, 1, (left, right) -> left + right);
Run Code Online (Sandbox Code Playgroud)
或使用方法参考:
hashMap.merge(ch, 1, Math::addExact);
Run Code Online (Sandbox Code Playgroud)
ch在这种情况下)尚未与值关联或与null关联,则将其与给定的非空值(1在本例中)相关联.(left, right) -> left + right.ern*_*t_k 12
你不必.Map有一个merge方法,您可以使用它来更新值:
hashMap.merge(ch, 1, (oldVal, newVal) -> oldVal + newVal);
Run Code Online (Sandbox Code Playgroud)
那是做什么的:
hashMap还没有ch密钥,则添加一个新条目ch作为键和1值hashMap已经有一个带有ch键的条目,则调用最后一个函数来计算更新值.在这种情况下,(oldVal, newVal) -> oldVal + newVal只需将旧值添加到新值即可.正如Andy的评论所指出的,你也可以使用Map.compute:
int newValue = hashMap.compute(ch,
(key, existingVal) -> (existingVal == null) ? 1 : existingVal + 1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
459 次 |
| 最近记录: |