Java 8 Chaining Operations

У меня есть некоторый Java-код, который я хочу соединить вместе, используя поток Java 8. Вот код в текущем состоянии:

public class FooOperations {
    public List<FooB> getFooB() {
        List<FooA> fooAs = fooAOperation.getFooA();
        List<FooB> fooBs = fooBOperation.getFooB(fooAs);
        return fooBs;
    }
}

public class FooAOperation {
    public List<FooA> getFooA() {
        return foos.parallelStream().map(build()).filter(Objects::nonNull).collect(Collectors.toList());
    }
}

public class FooBOperation {
    public List<FooB> getFooB(List<FooA> fooAs) {
        return fooAs.parallelStream()
                    .map(fooA -> generateFooB(fooA))
                    .collect(Collectors.toList());
    }
}

Но я хочу объединить эти операции в одну строку в FooOperations учебный класс. Что-то вроде этого:

return fooAOperation.getFooA().map(fooA -> FooBOperation::getFooB(fooA)).collect(Collectors.toList());

Что потребует FooAOperation класс для возврата потока, а не списка.

Моя цель состоит в том, чтобы связать эти два процесса вместе, чтобы FooBOperation не нужно ждать полного списка FooA объекты, которые нужно заполнить до того, как он сможет начать обработку; Я хочу сделать так, чтобы он мог начинать обрабатывать объекты индивидуально, как только они будут готовы. Вроде как очередь сообщений.

Каков наилучший способ сделать это?

0 ответов

Другие вопросы по тегам