java - 如何检查我的 arraylist 中是否有不在 hashmap 中的元素?

标签 java collections java-8 java-stream

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

我还有一个 hashmapString值,我想检查我的列表中是否有任何元素不在 HashMap 中。这是我写的代码:

List<String> someStrings = fetchData();
if (someStrings.stream().noneMatch(s -> myHashMap.containsValue(s))) {
    return false;
} 
return true;

但它不能正常工作。你能帮我吗?

最佳答案

鉴于你的情况是

if there's any element in my List that is not in the Hashmap

您可以在遍历元素列表时使用 anyMatch 来检查是否有任何元素不存在于 hashmap 值中。

return someStrings.stream().anyMatch(val -> !myHashMap.containsValue(val))

或者将其视为someStrings 的所有元素都出现在 HashMap 值中

return someStrings.stream().allMatch(myHashMap::containsValue);

类似的检查也可以在值的 Collection 上使用 containsAll :

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

关于java - 如何检查我的 arraylist 中是否有不在 hashmap 中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54787135/

相关文章:

java - 使用java Itext获取字体颜色

Java递归,返回数组索引

java - 使用 Castor,如何将 Java 类 "java.util.ArrayList"映射到元素 "ArrayList",同时为其包含的对象生成元素?

java - JAXB UnMarshal Collection 元素顺序

Java 泛型 : Cannot convert from Object to T

java - 迭代器没有按照我想要的方式运行。我究竟做错了什么?

java - 如何在Linux(Ubuntu操作系统)中配置Jnotify?

c# - 泛型传递类型成员以对泛型集合进行操作

java - 将本地时间 (Java 8) 转换为日期

java - 流式传输迭代器的最简单方法