Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java8流过滤Hashmap以动态更新值?_Java_Java 8_Java Stream - Fatal编程技术网

如何使用Java8流过滤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

我有一个场景,我不确定什么可能是过滤hashmap和更新同一映射的有效方法。这是我的hashmap;
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()));