java - 根据枚举列表验证字符串列表

标签 java enums

我有一个 .properties 文件,其中包含一组作为键值对的属性。这被读入配置枚举类。该配置类包含与属性相对应的枚举。我希望能够发现两者之间的差异。因此,如果属性文件包含类中不存在的属性,或者反之亦然。

换句话说,我有一个枚举数组:

MyEnumClass[] 枚举 = {E1,E2,E3}

和代表枚举的字符串数组

字符串[]属性= {"E1","E2","E3"}

如何找到两者的交集?最好我想避免流。

最佳答案

这是计算交集的简单方法(更改输入以使结果显而易见):

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]

关于java - 根据枚举列表验证字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54787243/

相关文章:

java - 为什么 HashMap "contain"不只包含内部更改的键?

java - 是否有任何可靠的建议来源支持或反对使用 Optional 作为对象转换机制

java - 声明枚举时出现问题

java - 是否可以基于输入文件创建 Java 枚举?

wpf - ComboBox 绑定(bind)到枚举,我做错了什么?

objective-c - 使用 LLVM 5 在 Objective-C 的结构中声明枚举

java - 考虑到 Java 中的当前语言环境,如何检查某个日期是否为周末?

java - 如何在Android Studio中的RecyclerAdapter中传递多个数组

java - 如何在 Android 中向左滑动按钮

c++ - 使用枚举和结构?