gpt4 book ai didi

java - 查看映射是否包含空键的独立实现方式

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:49 24 4
gpt4 key购买 nike

我有一个 API,它接收一个实现 Map 接口(interface)的参数。我需要检查此 Map 是否包含任何 null 键。问题是 Map 的某些实现,例如 ConcurrentHashMap,如果您对它们调用 contains(null),它会抛出 NPE。

有什么好的、独立于实现的方法来查看符合 Map 接口(interface)的对象是否包含 null 键?

请注意,我不能使用 keySet 并检查它是否包含 null,因为 ConcurrentHashMap 实际上只是将 keySet 包装到本身并最终在下面再次调用 contains

任何想法将不胜感激。我宁愿不使用 instanceOf,因为当你不得不处理这么多不同类型的 Map

时,它往往看起来很难看

最佳答案

我认为这可以解决问题:

private static Map<String, String> m = new ConcurrentHashMap<>();

public static void main(String[] args) {
boolean hasNullKey = false;
try {
if (m != null && m.containsKey(null)) {
hasNullKey = true;
}
} catch (NullPointerException npe) {
// Relies on the fact that you can't add null keys to Map
// implementations that will throw when you check for one.
// Add logging etc.
}
System.out.println("Does map have null key? " + hasNullKey);
}

关于java - 查看映射是否包含空键的独立实现方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27512362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com