java 嵌套类 map_java – 将groupingBy用于嵌套Map,但收集到不同类型的对象

所以我有这个“工作”的代码(为简单起见替换一些名称):

Map>> someMap =

someListOfClassA.stream()

.filter(...)

.collect(Collectors.groupingBy(SomeClassA::someCriteriaA,

Collectors.groupingBy(SomeClassA::someCriteriaB, GuavaCollectors.toImmutableList()

)

));

但是,我想更改此代码,以便在通过SomeClassA字段进行分组后,内部集合是SomeClassB.例如,如果类看起来像这样:

假设他们都拥有所有args构造函数

class SomeClassA {

String someCriteriaA;

String someCriteriaB;

T someData;

String someId;

}

class SomeClassB {

T someData;

String someId;

}

并且有一个方法:

public static Collection getSomeClassBsFromSomeClassA(SomeClassA someA) {

List listOfB = someMethod(someA);

return listOfB; // calls something using someClassA, gets a list of SomeClassB

}

我想将SomeClass Bs的结果列表展平为

Map>> someMap =

someListOfClassA.stream()

.filter(...)

. // not sure how to group by SomeClassA fields but result in a list of SomeClassB since one SomeClassA can result in multiple SomeClassB

我不确定这将如何适合上面的代码.如何将基于SomeClassB的一堆列表收集到SomeClassA的所有值的单个列表中?如果单个ClassA映射到单个ClassB,我知道如何使用Collectors.mapping使它工作,但由于每个ClassA导致多个ClassB,我不知道如何让它工作.

任何想法,将不胜感激.谢谢!


版权声明:本文为weixin_35756637原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。