オブジェクトの地図にリストを変換するために使用コレクター - Javaの

user3819295:

どのように私は、A、のDAOのリストを変換するためにコレクターを使用してください Map<String, List<Pojo>>

daoListは次のようになります。

[0] : id = "34234", team = "gools", name = "bob", type = "old"
[1] : id = "23423", team = "fool" , name = "sam", type = "new"
[2] : id = "34342", team = "gools" , name = "dan", type = "new"

私はGROUPBYのチーム '属性にしたいと、以下のように、各チームのリストを持っています:

"gools":
       ["id": 34234, "name": "bob", "type": "old"],
       ["id": 34342, "name": "dan", "type": "new"]

"fool":
       ["id": 23423, "name": "sam", "type": "new"]

POJOは、次のようになります。

@Data
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PUBLIC)
public class Pojo{

    private String id;
    private String name;
    private String type;
}

これは私が、それを行うには、明らかに間違った方法をしようとしている方法です。

public Team groupedByTeams(List<? extends GenericDAO> daoList)
    {

        Map<String, List<Pojo>> teamMap= daoList.stream()
            .collect(Collectors.groupingBy(GenericDAO::getTeam))
    }
彼らは次のとおりでした:

あなたの集電体には、 - .collect(Collectors.groupingBy(GenericDAO::getTeam))-が生成されますMap<String,List<? extends GenericDAO>>

生成するためにはMap<String, List<Pojo>>、あなたは変換する必要がありますGenericDAOにインスタンスをPojo連鎖することにより、インスタンスCollectors.mapping()へのコレクターをCollectors.groupingBy()コレクター:

Map<String, List<Pojo>> teamMap = 
    daoList.stream()
           .collect(Collectors.groupingBy(GenericDAO::getTeam,
                                          Collectors.mapping (dao -> new Pojo(...),
                                                              Collectors.toList())));

これは、あなたには、いくつか持っていると仮定しているPojo受け取るコンストラクタGenericDAO、インスタンスまたは関連するGenericDAOプロパティを。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=122319&siteId=1