Java 8 Streams 分组收集器

标签 java java-8 java-stream

如何使用 Java 8 API 获取此数据结构?

这是我的对象结构:

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);

最佳答案

使用分组方式:

Map<B, List<A>> bs = as.stream().collect(Collectors.groupingBy(A::getB));

假设类 A 有一个 getB() 方法。

关于Java 8 Streams 分组收集器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48457838/

相关文章:

javascript - Vue.js 指令在 JSP 中不起作用

java - JFrame 的 BoxLayout

java - 使用 Maven 时如何解决更严格的 Java 8 Javadoc

Java Stream 有状态的 findFirst

java - 将多个日志文件存档在一个存档中

java - 用于在 iOS/android 上为塔防等 2D 游戏制作动画的方法

java - 使用 Java 8 获取 Set 中所有项目最常见名称的正确方法

java 8 函数式链接链接

Java 8 Streams 多重分组依据

Java 8 Streams - 基于条件的迭代器映射和删除