簡體   English   中英

Java 8列表 <Foo> 到地圖 <String, Map<String, List<String> &gt;&gt;

[英]Java 8 List<Foo> to Map<String, Map<String, List<String>>>

我有以下課程:

public class Foo {
    private String areaName;
    private String objectName;
    private String lineName;
}

現在我想將List<Foo>轉換為Map<String, Map<String, List<String>>> 我發現這個答案幫助我開發了以下代碼:

Map<String, Map<String, List<String>>> testMap = foos.stream().collect(Collectors.groupingBy(e -> e.getAreaName(),
        Collectors.groupingBy(e -> e.getObjectName(), Collectors.collectingAndThen(Collectors.toList(),
                e -> e.stream().map(f -> f.getLineName())))));

此代碼的唯一問題是它應轉換為List<String> 我找不到在該部分將Foo轉換為List的方法。

導致Map<String, Map<String, List<Foo>>>另一種方法:

Map<Object, Map<Object, List<Foo>>> testMap = ventures.stream().collect(Collectors.groupingBy(e -> e.getAreaName(),
        Collectors.groupingBy(e -> e.getObjectName(), Collectors.toList())));

為了從List<Foo>接收Map<String, Map<String, List<String>>> ,我需要更改什么?

為了獲得與Stream元素類型不同的List ,您應該將Collectors.mapping器鏈接到groupingBy

Map<String, Map<String, List<String>>> testMap = 
    foos.stream()
        .collect(Collectors.groupingBy(Foo::getAreaName,
                                       Collectors.groupingBy(Foo::getObjectName,
                                                             Collectors.mapping(Foo::getLineName,
                                                                                Collectors.toList()))));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM