HashMap 返回未找到的键的默认值?

2022-08-31 06:44:38

是否可以为集合中找不到的所有键返回默认值?HashMap


答案 1

在Java 8中,使用Map.getOrDefault。它采用键,如果未找到匹配的键,则返回值。


答案 2

[更新]

正如其他答案和评论者所指出的,从Java 8开始,你可以简单地调用Map#getOrDefault(...)。

[原文]

没有Map实现可以完全做到这一点,但是通过扩展HashMap来实现自己的Map实现是微不足道的:

public class DefaultHashMap<K,V> extends HashMap<K,V> {
  protected V defaultValue;
  public DefaultHashMap(V defaultValue) {
    this.defaultValue = defaultValue;
  }
  @Override
  public V get(Object k) {
    return containsKey(k) ? super.get(k) : defaultValue;
  }
}