我有一个场景,我不确定过滤哈希图和更新同一映射的有效方法是什么。这是我的哈希图; Map<Double, List<Product>> mappedProducts = new HashMap<>(); 我已经用某种方法将mappedProducts 中的键和值放在了一起。现在,在另一种方法中,我尝试根据我的键值是否大于产品的属性权重来过滤产品列表。这就是我所做的,虽然它工作得很好,但我不确定这是否是最有效和最高效的方法。看看下面的代码;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条经验 获得超6个赞
如果您想要过滤后的新地图:保留所有产品的权重均小于键的条目
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));
如果要修改主图:删除其中一种产品的权重高于键的所有条目
mappedProducts.entrySet() .removeIf(packList -> packList.getValue().stream().anyMatch(pack -> pack.getWeight() > packList.getKey()));
添加回答
举报
0/150
提交
取消