亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Java 8 流過濾 Hashmap 以動態更新值?

如何使用 Java 8 流過濾 Hashmap 以動態更新值?

米脂 2024-01-25 21:38:41
我有一個場景,我不確定過濾哈希圖和更新同一映射的有效方法是什么。這是我的哈希圖; Map<Double, List<Product>> mappedProducts = new HashMap<>(); 我已經用某種方法將mappedProducts 中的鍵和值放在了一起?,F在,在另一種方法中,我嘗試根據我的鍵值是否大于產品的屬性權重來過濾產品列表。這就是我所做的,雖然它工作得很好,但我不確定這是否是最有效和最高效的方法??纯聪旅娴拇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條經驗 獲得超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()));



查看完整回答
反對 回復 2024-01-25
  • 1 回答
  • 0 關注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號