Создать список объектов с помощью API потока Java - PullRequest
0 голосов
/ 26 октября 2018

У меня есть эти структуры данных:

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>, как я могу использовать API потоков Java для создания List<C>. Считайте каждого участника публичным.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018
List<C> cs = as.stream().flatMap((a -> { 
        return a.refiners.stream().map(b -> {
            return new C(a, b);
        });
    })).collect(Collectors.toList());

, где as - список A экземпляров.

0 голосов
/ 26 октября 2018

Делая здесь предположения, но вы можете использовать flatMap и map, чтобы создать по одному C для каждого B в каждом A

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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...