如何检查我的数组列表中是否有不在哈希图中的元素?

我有一个List<String>输入java,它包含一些字符串。


我也有一个hashmapwithString值,我想检查我的 List 中是否有任何不在 Hashmap 中的元素。这是我写的代码:


List<String> someStrings = fetchData();

if (someStrings.stream().noneMatch(s -> myHashMap.containsValue(s))) {

    return false;

return true;

但它不能正常工作。你能帮我解决这个问题吗?


浮云间
浏览 118回答 2
2回答

汪汪一只猫

鉴于您的情况是如果我的列表中有任何元素不在 Hashmap 中您可以anyMatch在迭代元素列表时使用以检查它们中的任何一个是否不存在于 hashmap 值中。return&nbsp;someStrings.stream().anyMatch(val&nbsp;->&nbsp;!myHashMap.containsValue(val))或者将其视为 的所有元素someStrings都存在于 hashmap 值中return&nbsp;someStrings.stream().allMatch(myHashMap::containsValue);虽然也可以使用类似的检查containsAll值Collection:return&nbsp;myHashMap.values().containsAll(someStrings);

繁华开满天机

不需要流,您可以使用旧的Collection#removeAll():Set<String>&nbsp;copy&nbsp;=&nbsp;new&nbsp;HashSet<>(someStrings); copy.removeAll(myHashMap.values());现在copy将包含所有未包含在myHashMap.&nbsp;然后你可以对它们做一些事情(比如迭代)或者只是调用Collection#isEmpty()来检查是否所有的都包含在地图中
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java