-1

在一次采访中,有人问哈希 Map 是否可以将 null 作为键存储,我回答是,因为我们可以将 null 作为键存储在 HashMap 中,然后他进一步问,假设创建的 HasMap 由字符串作为键组成,其关联值为在那里,现在他在任何情况下都不希望 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 存在。请指教。

4

2 回答 2

1

HashMap实际上确实允许空键。

如果您尝试添加空键,其他Map实现则不会,Hashtable并且会抛出 NullPointerException。ConcurrentHashMap

如果您想禁止空键,您可以使用这些实现之一,或者您自己的 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);
   }
 }
于 2013-02-20T18:35:09.423 回答
0

迭代您的哈希图并查找值:

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}
于 2013-02-20T18:36:54.693 回答