小编Lov*_*ver的帖子

Lambda&Stream:收集地图

我想使用Stream&Lambda夫妇构建一个Map.

我尝试了很多方法但是我被困了.这是使用Stream/Lambda和经典循环完成它的经典Java代码.

Map<Entity, List<Funder>> initMap = new HashMap<>();
List<Entity> entities = pprsToBeApproved.stream()
    .map(fr -> fr.getBuyerIdentification().getBuyer().getEntity())
    .distinct()
    .collect(Collectors.toList());

for(Entity entity : entities) {
    List<Funder> funders = pprsToBeApproved.stream()
        .filter(fr -> fr.getBuyerIdentification().getBuyer().getEntity().equals(entity))
        .map(fr -> fr.getDocuments().get(0).getFunder())
        .distinct()
        .collect(Collectors.toList());
    initMap.put(entity, funders);
        }
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我只知道如何在列表中收集,但我不能对地图做同样的事情.这就是为什么我必须再次流式传输我的列表以构建第二个列表,最后将所有列表放在一个地图中.我也尝试了'collect.groupingBy'语句,因为它也应该生成一张地图,但我失败了.

java lambda hashmap java-8 java-stream

5
推荐指数
1
解决办法
195
查看次数

标签 统计

hashmap ×1

java ×1

java-8 ×1

java-stream ×1

lambda ×1