我有一個場景,我不確定過濾哈希圖和更新同一映射的有效方法是什么。這是我的哈希圖; Map<Double, List<Product>> mappedProducts = new HashMap<>(); 我已經(jīng)用某種方法將mappedProducts 中的鍵和值放在了一起。現(xiàn)在,在另一種方法中,我嘗試根據(jù)我的鍵值是否大于產(chǎn)品的屬性權(quán)重來過濾產(chǎn)品列表。這就是我所做的,雖然它工作得很好,但我不確定這是否是最有效和最高效的方法??纯聪旅娴拇a;this.mappedProducts.entrySet().stream().filter(packList ->{ mappedProducts.put(packList.getKey(), packList.getValue().stream().filter(pack ->{ if(pack.getWeight() <= packList.getKey()) return true; return false; }).collect(Collectors.toList())); return true; }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));System.out.println("Filtered Products"+mappedProducts);還有其他更好的方法來完成這項工作嗎?
1 回答

搖曳的薔薇
TA貢獻1793條經(jīng)驗 獲得超6個贊
如果您想要過濾后的新地圖:保留所有產(chǎn)品的權(quán)重均小于鍵的條目
Map<Double, List<Product>> filtered = mappedProducts.entrySet() .stream() .filter(packList -> packList.getValue().stream().allMatch(pack -> pack.getWeight() < packList.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
如果要修改主圖:刪除其中一種產(chǎn)品的權(quán)重高于鍵的所有條目
mappedProducts.entrySet() .removeIf(packList -> packList.getValue().stream().anyMatch(pack -> pack.getWeight() > packList.getKey()));
添加回答
舉報
0/150
提交
取消