首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Map.keySet何时返回null

Map.keySet何时返回null
EN

Stack Overflow用户
提问于 2018-05-07 17:59:18
回答 2查看 2.4K关注 0票数 2

我正在读一些检查Map.keySet返回的值是否为null的代码。javadoc没有说明任何关于Map.keySet返回值的内容。如果Map不包含任何内容,则它是一个空集。

Map.keySet返回的值何时可以为null

EN

回答 2

Stack Overflow用户

发布于 2018-05-07 18:11:25

这绝对是因为你所提到的代码的作者对Map.keySet缺乏理解。正如您已经提到的,java文档并没有明确声明keySet方法将返回null

作为示例,我刚刚查看了keySet方法的HashMap实现,它的定义如下:

代码语言:javascript
复制
public Set<K> keySet() {
      Set<K> ks = keySet;
      if (ks == null) {
          ks = new KeySet();
          keySet = ks;
      }
      return ks;
}

因此,正如您所看到的,从该方法返回的值永远不会为空。

我还检查了keySet方法的其他几个实现,例如TreeMapConcurrentHashMap等,但没有找到任何返回null的实现。

票数 5
EN

Stack Overflow用户

发布于 2018-05-07 18:09:14

Map.keySet永远不应该返回null。文档中暗示keySet永远不能为null,因为它的内容“跟踪”Map的内容

该集由贴图支持,因此对贴图的更改会反映在该集内,反之亦然。

如果允许keySet返回null,这是不可能实现的。

在Java、HashMapTreeMap中,Map的标准实现不从keySet返回null。由于Map是一个接口,因此可能会开发一个不正确的实现,从而为keySet返回null。然而,针对这种极小的可能性进行编程并不是一个好主意。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50211524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档