在什么情况下,map.entrySet返回的Map.Entry将为NULL

Abh*_*nav 7 java dictionary hashmap entryset

我遇到了一个代码片段,它使用其入口集迭代地图,并仅在entry!= null时执行一些操作

据我所知,即使我们没有在地图中输入任何内容,也会map.entrySet返回一个空集null.即使我把{null,null}那个条目放在一起[null=null]就是这个元素的实例.但实例不会为空.

Map<String, String> map = new HashMap<String, String>();
        map.put(null, null);
        map.put(string1, string1);
        for(Map.Entry<String, String> entry : map.entrySet()){
            if(entry != null){
                                  //do something
            }

        }
Run Code Online (Sandbox Code Playgroud)

我有以下基本问题:

  1. 在什么情况下HashMap中的条目将为NULL?
  2. 支票甚至有效

我坚信if(entry != null)谨慎,应该将其删除.我只想确定.

Kay*_*man 6

迭代器可以为支持空值的集合返回空值,但正如您自己所示,这是不可能的Maps.检查是多余的和误导性的.


bob*_*obK 5

场景无效。这是哈希图实现的代码

private Set<Map.Entry<K,V>> entrySet0() {
    Set<Map.Entry<K,V>> es = entrySet;
    return es != null ? es : (entrySet = new EntrySet());
}
Run Code Online (Sandbox Code Playgroud)

所以,你不应该得到一个空值