说,我有一个叫做DomainObject的类,

class DomainObject {

  private Long id;
  private String domainParam;
}

我收到类似的对象列表:
(id, domainType) = (1, "A") , (1, "B"), (3, "C"), (4, "A"), (1, "C")

毕竟,我想接收带有Key(Id的ImmmableableList)和Pair(domainParam的Immmable列表)的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。

我将不胜感激。

最佳答案

        ......
        .stream()
        .collect(Collectors.collectingAndThen(
            Collectors.groupingBy(
                x -> ImmutableList.of(x.getId()),
                Collectors.mapping(
                    DomainObject::getDomainParam,
                    ImmutableList.toImmutableList())),
            ImmutableMap::copyOf
        ));

10-06 10:00