亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據枚舉列表驗證字符串列表

根據枚舉列表驗證字符串列表

HUX布斯 2022-06-30 11:03:56
我有一個.properties文件,其中包含一組屬性作為鍵值對。這被讀入配置枚舉類。此配置類包含對應于屬性的枚舉。我希望能夠發現兩者之間的差異。因此,如果屬性文件包含類中不存在的屬性,或者相反。換句話說,我有一個枚舉數組:MyEnumClass[] enums = {E1,E2,E3}和一個表示枚舉的字符串數組String[] properties = {"E1","E2","E3"}我怎樣才能找到兩者的交集?最好我想避免流。
查看完整描述

2 回答

?
慕雪6442864

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]


查看完整回答
反對 回復 2022-06-30
?
嚕嚕噠

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); 


查看完整回答
反對 回復 2022-06-30
  • 2 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號