在一次采访中,人们被问到一个哈希Map是否可以存储null作为键,我回答是,因为我们可以将null存储为HashMap中的键,然后他进一步要求说明创建的HasMap包含String作为键及其有条件的值,现在他不想在任何情况下null应该存储为一个键然后需要做什么预检才能实现这一点,请指教.. 下面是HashMap ..
Map map = new HashMap();
map.put("ty" ,"Spring");
map.put(null, "nullkey");
map.put("Anupam", "Hibernate");
map.put("Ravi", ".Net");
如上所示,在上面的Map中我们不需要null键,需要做什么预检,以便np键在HashMap中应该为Null。请指教。
答案 0 :(得分:1)
HashMap
实际上允许空键。
其他Map
实现不像Hashtable
和ConcurrentHashMap
那样,如果您尝试添加空键,则会抛出NullPointerException。
如果你想禁止空键,你可以使用其中一个实现,或你自己的HashMap子类。
这样的事情:
public class MyHashMap extends HashMap<K,V> {
@Override
public V put(K key, V value) {
if (key == null) {
throw new NullPointerException();
}
return super.put(key, value);
}
}
答案 1 :(得分:0)
迭代你的hashmap并查找值:
Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry dataPair = (Map.Entry)it.next();
System.out.println(dataPair.getKey() + " : " + dataPair.getValue());
}
然后,如果你想用地图的键删除或做一些操作,那么,在while块内:
if (dataPair.getKey() == null) { //Todo: Do something here}