如何使用java 8流获取此数据结构。
class A {
B b;
public A(B b) {
this.b = b;
}
}
class B {
List<A> as;
private int i;
public B(int i) {
this.i = i;
}
}
这是我的对象结构。我试图把它聚合到,
Map<A, List<B>> bs
来自,
List<A> as = new ArrayList<>();
as.add(a1);
as.add(a2);
as.add(a3);
答案 0 :(得分:7)
使用groupingBy:
Map<B, List<A>> bs = as.stream().collect(Collectors.groupingBy(A::getB));
假设班级A
有getB()
方法。
答案 1 :(得分:7)
实际上非常简单(假设hashCode/equals
中存在B
)
as.stream()
.collect(Collectors.groupingBy(A::getB))