关于在Map中检查Map中应该没有空键

时间:2013-02-20 18:26:45

标签: java collections map

在一次采访中,人们被问到一个哈希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。请指教。

2 个答案:

答案 0 :(得分:1)

HashMap实际上允许空键。

其他Map实现不像HashtableConcurrentHashMap那样,如果您尝试添加空键,则会抛出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}