我有一個(gè)List<String>輸入java,它包含一些字符串。我也有一個(gè)hashmapwithString值,我想檢查我的 List 中是否有任何不在 Hashmap 中的元素。這是我寫(xiě)的代碼:List<String> someStrings = fetchData();if (someStrings.stream().noneMatch(s -> myHashMap.containsValue(s))) { return false;} return true;但它不能正常工作。你能幫我解決這個(gè)問(wèn)題嗎?
2 回答

汪汪一只貓
TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
鑒于您的情況是
如果我的列表中有任何元素不在 Hashmap 中
您可以anyMatch
在迭代元素列表時(shí)使用以檢查它們中的任何一個(gè)是否不存在于 hashmap 值中。
return someStrings.stream().anyMatch(val -> !myHashMap.containsValue(val))
或者將其視為 的所有元素someStrings
都存在于 hashmap 值中
return someStrings.stream().allMatch(myHashMap::containsValue);
雖然也可以使用類(lèi)似的檢查containsAll
值Collection
:
return myHashMap.values().containsAll(someStrings);

繁華開(kāi)滿(mǎn)天機(jī)
TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
不需要流,您可以使用舊的Collection#removeAll()
:
Set<String> copy = new HashSet<>(someStrings); copy.removeAll(myHashMap.values());
現(xiàn)在copy
將包含所有未包含在myHashMap
. 然后你可以對(duì)它們做一些事情(比如迭代)或者只是調(diào)用Collection#isEmpty()
來(lái)檢查是否所有的都包含在地圖中
添加回答
舉報(bào)
0/150
提交
取消