我正在尝试检查 productId 的值是否在 HashMap 中,但我不明白如何正确处理它。public static void main(String[] args) { HashMap<Storage, HashSet<Product>> myMap = new HashMap<>(); Storage storage1 = new Storage("101", "1"); Storage storage2 = new Storage("102", "2"); HashSet<Product> myProduct = new HashSet<>(); Product product = new Product("120", "bread", "15"); myProduct.add(product); myMap.put(storage1, myProduct); System.out.println(myMap); String in = "120"; List entry = new ArrayList(myMap.values()); if (entry.contains(in)) { System.out.println("true"); } }存储类和产品类都具有私有字段、构造函数、getter、setter 以及 IDEA 生成的 hashcode 和 equals。
2 回答
偶然的你
TA贡献1841条经验 获得超3个赞
使用 java 8,您可以这样做:
String in = "120";
boolean contains = myMap
.values().stream()
.flatMap(Set::stream)
.anyMatch(p -> p.getId().equals(in)));
System.out.println("Contains? " + contains);
这基本上通过映射内的值“流”,在子集上调用流,然后当任何项目的 id 与提供的字符串匹配时返回 true,否则返回 false
梦里花落0921
TA贡献1772条经验 获得超6个赞
使用 Java 8:
myMap.forEach((k,v) -> {
for (Product p : v) {
if (p.getValue().equals(in))
System.out.println(true);
}
});
编辑:修复了答案
添加回答
举报
0/150
提交
取消