首页 > 解决方案 > 使用 java 流 API 创建对象列表

问题描述

我有这些数据结构:

class A {
     String domain;
     List<B> refiners;
}

class B {
    String name;
    String signature;
}

class C {
    String domain;
    String name;
    String signature;

    public C(A a, B b) {
        this.domain = a.domain;
        this.name = b.name;
        this.signature = b.signature;
    }
}

有一个List<A>如何使用 java 流 API 创建一个List<C>. 现在将每个成员都视为公开的。

标签: javajava-stream

解决方案


在此处进行假设,但您可以使用 aflatMap和 a为每个中的每个map创建一个CBA

List<A> listA = ...;

List<C> listC = listA.stream()
    .flatMap(a -> a.refiners.stream()
        .map(b -> {
            C c = new C();
            c.domain = a.domain;
            c.name = b.name;
            c.signature = b.signature;
            return c;
        }))
    .collect(Collectors.toList());

推荐阅读