我想确保作为参数传递给方法的 Map 不包含空键。人们会假设以下会做:if ( map.containsKey(null) ) …但是,如果该方法传递了类似 a 的东西,那将会中断TreeMap,根据一般的 Java Map 合同,它可以自由地拒绝带有 NPE 的空键。在接受任何 Map 实现时,我们是否有一种明智的方法来测试空键?
3 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
boolean hasAnyNull = yourMap.keySet() .stream() .anyMatch(Objects::isNull);
慕森王
TA贡献1777条经验 获得超3个赞
boolean hasNullKey(Map<?,?> map) {
try {
return map.containsKey(null);
} catch (NullPointerException e) {
return false;
}
}
请注意,这也会false在map它自己是时返回null,这可能是也可能不是。
慕标5832272
TA贡献1966条经验 获得超4个赞
使用instanceof发现其一个TreeMap
boolean hasNullKey(Map<?,?> map) {
return map instanceof TreeMap ? false :map.containsKey(null);
}
添加回答
举报
0/150
提交
取消