为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

浮云间 2022-06-30 11:03:25
我有一个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);

虽然也可以使用类似的检查containsAllCollection

return myHashMap.values().containsAll(someStrings);


查看完整回答
反对 回复 2022-06-30
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

不需要流,您可以使用旧的Collection#removeAll()

Set<String> copy = new HashSet<>(someStrings);
copy.removeAll(myHashMap.values());

现在copy将包含所有未包含在myHashMap. 然后你可以对它们做一些事情(比如迭代)或者只是调用Collection#isEmpty()来检查是否所有的都包含在地图中


查看完整回答
反对 回复 2022-06-30
  • 2 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信