2 回答

TA貢獻1812條經驗 獲得超5個贊
這是計算交集的簡單方法(更改輸入以使結果明顯):
List<String> properties = Arrays.asList(new String[] { "E1", "E2" });
List<MyEnumClass> enums = Arrays.asList(new MyEnumClass[]
{ MyEnumClass.E2, MyEnumClass.E3 });
List<String> enumNames = new ArrayList<>();
for (MyEnumClass e : enums)
enumNames.add(e.name());
List<String> intersection = new ArrayList<>(enumNames);
intersection.retainAll(properties);
System.out.println(intersection); //[E2]
這可以計算彼此之間的差異:
List<String> propDiff = new ArrayList<>(properties);
propDiff.removeAll(enumNames);
System.out.println(propDiff); //[E1]
List<String> enumDiff = new ArrayList<>(enumNames);
enumDiff.removeAll(properties);
System.out.println(enumDiff); //[E3]

TA貢獻1784條經驗 獲得超7個贊
你可以這樣使用EnumSet<MyEnumClass>:
Set<MyEnumClass> all = EnumSet.allOf(MyEnumClass.class);
EnumSet<MyEnumClass>然后從您的屬性創建另一個:
Set<MyEnumClass> loaded = EnumSet.noneOf(MyEnumClass.class);
for(String property : properties) {
loaded.add(MyEnumClass.valueOf(property));
}
Collection.removeAll然后,您可以使用, Collection.addAll,來檢查不同的內容Collection.retainAll:
// all will now contain every element from loaded
all.addAll(loaded);
// all will now contain every element which was not contained in loaded
all.removeAll(loaded);
// all will now contain every element which was contained in loaded
all.retainAll(loaded);
添加回答
舉報