如何在任何 Java 映射实现上测试空键?

我想确保作为参数传递给方法的 Map 不包含空键。人们会假设以下会做:

if ( map.containsKey(null) ) …

但是,如果该方法传递了类似 a 的东西,那将会中断TreeMap,根据一般的 Java Map 合同,它可以自由地拒绝带有 NPE 的空键

在接受任何 Map 实现时,我们是否有一种明智的方法来测试空键?


MM们
浏览 159回答 3
3回答

拉丁的传说

boolean hasAnyNull = yourMap.keySet()       .stream()       .anyMatch(Objects::isNull);

慕森王

boolean hasNullKey(Map<?,?> map) {&nbsp; try {&nbsp; &nbsp; return map.containsKey(null);&nbsp; } catch (NullPointerException e) {&nbsp; &nbsp; return false;&nbsp; }}请注意,这也会false在map它自己是时返回null,这可能是也可能不是。

慕标5832272

使用instanceof发现其一个TreeMapboolean hasNullKey(Map<?,?> map) {&nbsp; &nbsp; return map instanceof TreeMap ? false :map.containsKey(null);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java