java - 根据枚举列表验证字符串列表
问题描述
我有一个.properties
文件,其中包含一组属性作为键值对。这被读入配置枚举类。此配置类包含对应于属性的枚举。我希望能够发现两者之间的差异。因此,如果属性文件包含类中不存在的属性,或者相反。
换句话说,我有一个枚举数组:
MyEnumClass[] enums = {E1,E2,E3}
和一个表示枚举的字符串数组
String[] properties = {"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]
推荐阅读
- php - wp remote get and advanced custom fields returning hundreds of duplicates
- python - 访问 QWebEngineView 中的本地存储
- javascript - 使用 MongoDB 聚合时出现错误,“无法从 BSON 类型 objectId 转换为字符串”
- javascript - 获取后运行javascript?
- ffmpeg - ffmpeg - 生成拇指导致不同的纵横比
- apache-kafka - kafka主题中理想的分区数是多少?
- xamarin - Xamarinforms 中的 Xamarin.Forms.Xaml.XamlParseException 异常
- sql - 如何进行内部联接查询以获取多个表的选定列
- .net - 在 dotnet-publish 中,属性覆盖是否会传播到所有其他引用的项目?这能控制吗?
- python - “if”语句查找剩余数字并从 csv 追加到列表中