根据Java,HashMap允许Null
为关键。我的客户说
仅使用
HashMap
,而不是像HashTable,ConcurrentHashMap等其他编写逻辑,这样HashMap不会 在我的整体产品逻辑中包含Null
作为键。
我有像
这样的选项创建HashMap的包装类并在任何地方使用它。
import java.util.HashMap;
public class WHashMap<T, K> extends HashMap<T, K> {
@Override
public K put(T key, K value) {
// TODO Auto-generated method stub
if (key != null) {
return super.put(key, value);
}
return null;
}
}
我建议另外一个选项,比如手动删除空键或不允许每个选项。也不允许重复相同的操作。
让我知道..如果我错过了其他更好的方法吗?
仅根据java标准将HashMap与Null
一起使用。
让我知道处理此类案件的好方法是什么?
答案 0 :(得分:5)
按如下所示更改put方法实现
@Override
public K put(T key, K value) {
// TODO Auto-generated method stub
if (key == null) {
throw new NullPointerException("Key must not be null.");
}
return super.put(key, value);
}
答案 1 :(得分:3)
您的代码是创建无法包含空键的HashMap的合理方式(尽管它并不完美:如果有人调用putAll
并传入地图会发生什么一个空键?);但我不认为这是你的客户所要求的。相反,我认为你的客户只是说他希望你创建一个不包含空键的HashMap(即使它可以)。如同,(s)他只是希望你确保程序逻辑中的任何内容都不会在地图中放入空键。