我正在嘗試檢查 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"); } }存儲(chǔ)類和產(chǎn)品類都具有私有字段、構(gòu)造函數(shù)、getter、setter 以及 IDEA 生成的 hashcode 和 equals。
2 回答

偶然的你
TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
使用 java 8,您可以這樣做:
String in = "120";
boolean contains = myMap
.values().stream()
.flatMap(Set::stream)
.anyMatch(p -> p.getId().equals(in)));
System.out.println("Contains? " + contains);
這基本上通過映射內(nèi)的值“流”,在子集上調(diào)用流,然后當(dāng)任何項(xiàng)目的 id 與提供的字符串匹配時(shí)返回 true,否則返回 false

夢(mèng)里花落0921
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
使用 Java 8:
myMap.forEach((k,v) -> {
for (Product p : v) {
if (p.getValue().equals(in))
System.out.println(true);
}
});
編輯:修復(fù)了答案
添加回答
舉報(bào)
0/150
提交
取消