为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 ImmutableMap 中扁平化 ImmutableList

如何在 ImmutableMap 中扁平化 ImmutableList

湖上湖 2023-05-17 16:58:19
比如说,我有一个名为 DomainObject 的类,class DomainObject {  private Long id;  private String domainParam;}我收到的对象列表如下:(id, domainType) = (1, "A") , (1, "B"), (3, "C"), (4, "A"), (1, "C")毕竟,我想接收带有 Key(ImmutableList of Id) 和 Pair(Immutable list of domainParam) 的 ImmutableMap,例如:1 [A, B, C]3 [C]4 [A]现在我收到类似的东西:{[1]=[DomainObject(id=1, domainParam=A), DomainObject(id=1, domainParam=B), DomainObject(id=1, domainParam=B)]}这不是理想的解决方案。到目前为止,我有这样的代码:ImmutableMap<ImmutableList<Long>, ImmutableList<DomainObject>> groupedDomainObject(      List<DomainObject> domainObjectList) {    return domainObjectList.stream()        .collect(            Collectors.collectingAndThen(                Collectors.groupingBy(                    (domainObject) -> ImmutableList.of(domainObject.getId()),                    ImmutableList.<DomainObject>toImmutableList()),                ImmutableMap::copyOf));}我即将实现一个目标,但我如何才能从这部分中获得价值:ImmutableList.<DomainObject>toImmutableList()接收唯一没有 DomainObject id 的 domainParam。如果我能得到任何帮助,我将不胜感激。
查看完整描述

2 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

       ......

        .stream()

        .collect(Collectors.collectingAndThen(

            Collectors.groupingBy(

                x -> ImmutableList.of(x.getId()),

                Collectors.mapping(

                    DomainObject::getDomainParam,

                    ImmutableList.toImmutableList())),

            ImmutableMap::copyOf

        ));


查看完整回答
反对 回复 2023-05-17
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

ImmutableMap<Long, ImmutableList<String>> groupedDomainObject(

                List<DomainObject> domainObjectList) {


            return domainObjectList

                    .stream()

                    .collect(

                            Collectors.collectingAndThen(

                                Collectors.toMap(

                                    DomainObject::getId,

                                    obj -> ImmutableList.of(obj.domainParam),

                                    (a, b) -> ImmutableList.<String>builder().addAll(a).addAll(b).build()

                                ),

                                ImmutableMap::copyOf

                            )

                    );

        }


查看完整回答
反对 回复 2023-05-17
  • 2 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信