7
我正在首次尋找Java 8的Stream API。我試圖創建一個過濾器以從Map中移除元素。如何在Java 8 Stream API中使用Collectors.grouping創建地圖
這是我的地圖:
Map<String, Integer> m = new HashMap<>();
我想與價值<刪除條目=大於0所以我想申請一個過濾器,並取回一個新的地圖(地圖<字符串,整數>)。
這是我一直在努力:
m.entrySet().stream().filter(p -> p.getValue() > 0).collect(Collectors.groupingBy(s -> s.getKey()));
我得到一個HashMap <字符串,ArrayList的<的HashMap $節點> >。所以,不是我想要的。
我也試過:
m.entrySet().stream().filter(p -> p.getValue() > 0).collect(Collectors.groupingBy(Map::Entry::getKey, Map::Entry::getValue));
,這將導致:
// Error:(50, 132) java: method reference not expected here
基本上我不知道如何建立我的新地圖的值。
這是javadoc of Collectors,他們寫了幾個grouping的例子,但是我一直沒能得到它的工作。
那麼,我應該如何編寫collect來讓我的地圖按我想要的方式構建?