如何使用Java8流过滤Hashmap以动态更新值?
我有一个场景,我不确定什么可能是过滤hashmap和更新同一映射的有效方法。这是我的hashmap;如何使用Java8流过滤Hashmap以动态更新值?,java,java-8,java-stream,Java,Java 8,Java Stream,我有一个场景,我不确定什么可能是过滤hashmap和更新同一映射的有效方法。这是我的hashmap; Map-mappedProducts=new HashMap() 我已经用某种方法列出了mappedProducts中的键和值。现在,在另一种方法中,我尝试根据我的键值是否大于产品的属性权重来筛选出产品列表。我就是这样做的,虽然效果很好,但我不确定这是否是最有效的方法。看看下面的代码 this.mappedProducts.entrySet().stream().filter(packList
Map-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);
this.mappedProducts.entrySet().stream().filter(packList->{
mappedProducts.put(packList.getKey()、packList.getValue().stream().filter(pack->{
if(pack.getWeight()如果需要筛选的新映射:将条目保留在所有产品的权重小于键的位置
在我看来,您希望您的代码得到审查。也许更合适?筛选映射以检索子集,而更新密钥不是最合适的方法same@azro更新密钥?这里不需要也不讨论。我有产品列表作为价值,需要根据一些标准从列表中删除一些产品。就是这样…你的意思是,我不需要使用吗map.put(key,value)在过滤器中?如果是这样的话,我还能怎么做?对我来说,你正在更新一个映射,你正在迭代mappedProducts.entrySet().removeIf(packList->packList.getValue().stream().anyMatch(pack->pack.getWeight()>packList.getKey());
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()));