如何检查Java是否使用了枚举

时间:2019-05-25 11:16:19

标签: java enums

我想知道是否有一种方法可以找出使用了哪些枚举。我有一个完整的对象列表,需要检查使用了哪些枚举和未使用哪个枚举。

我试图遍历列表,并取回所有使用枚举的对象,但我不知道如何获取未使用的对象。

2 个答案:

答案 0 :(得分:3)

您可以使用EnumSet#allOf来获取枚举中的所有值,并从中删除使用过的值:

EnumSet<MyEnum> all = EnumSet.allOf(MyEnum.class);
for (MyObject obj : allOfTheObjects) {
    all.remove(obj.getEnumMember());
}

// Whatever remains in "all" are the unused enum values

答案 1 :(得分:0)

如果您希望使用更多的功能样式,这也将起作用:

EnumSet<MyEnum> allEnums = EnumSet.allOf(MyEnum.class);

List<MyObject> myObjects = new LinkedList<>();

Set<MyEnum> foundEnums = myObjects.stream()
            .map(MyObject::getMyEnum)
            .collect(Collectors.toSet());

allEnums.removeAll(foundEnums);

或:

myObjects.forEach(myObject -> allEnums.remove(myObject.getMyEnum()));