gpt4 book ai didi

java - 检查是否所有枚举值都已映射?

转载 作者:行者123 更新时间:2023-11-30 06:39:43 25 4
gpt4 key购买 nike

在 java 标准库中是否有一个方便的方法来检查 EnumMap 中所有可能的键是否都映射到一个值?

我可以像这样编写自己的方法:

public static <T extends Enum<T>> boolean areAllValuesMapped(EnumMap<T, ?> map, Class<T> enumClass)
{
return map.keySet().equals(EnumSet.allOf(enumClass));
}

但随后我重复了 Class 参数(已在 EnumMap 构造函数中给出)以及创建一次性 KeySet 和 EnumSet 对象。 EnumMap 应该有足够的信息来作为内部操作有效地执行此操作。

最佳答案

我无法在 EnumMap 中找到执行此操作的内置方法(我检查了源代码以确保)。但是,这里有一个稍微更快的方法:

public static <T extends Enum<T>> boolean areAllValuesMapped(EnumMap<T,?> map, Class<T> enumClass) {
return map.size() == enumClass.getEnumConstants().length;
}

我应该注意 EnumMap.keySet() 不返回 EnumSet;如果是这样,您使用的 equals() 调用将是比较 longs 的简单问题。实际上,它必须使用迭代器并按顺序检查每个枚举常量。

关于java - 检查是否所有枚举值都已映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/522260/

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