我有一个List<String>输入java,它包含一些字符串。我也有一个hashmapwithString值,我想检查我的 List 中是否有任何不在 Hashmap 中的元素。这是我写的代码:List<String> someStrings = fetchData();if (someStrings.stream().noneMatch(s -> myHashMap.containsValue(s))) { return false;} return true;但它不能正常工作。你能帮我解决这个问题吗?
2 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
鉴于您的情况是
如果我的列表中有任何元素不在 Hashmap 中
您可以anyMatch
在迭代元素列表时使用以检查它们中的任何一个是否不存在于 hashmap 值中。
return someStrings.stream().anyMatch(val -> !myHashMap.containsValue(val))
或者将其视为 的所有元素someStrings
都存在于 hashmap 值中
return someStrings.stream().allMatch(myHashMap::containsValue);
虽然也可以使用类似的检查containsAll
值Collection
:
return myHashMap.values().containsAll(someStrings);
繁华开满天机
TA贡献1816条经验 获得超4个赞
不需要流,您可以使用旧的Collection#removeAll()
:
Set<String> copy = new HashSet<>(someStrings); copy.removeAll(myHashMap.values());
现在copy
将包含所有未包含在myHashMap
. 然后你可以对它们做一些事情(比如迭代)或者只是调用Collection#isEmpty()
来检查是否所有的都包含在地图中
添加回答
举报
0/150
提交
取消