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
объекты, которые нужно заполнить до того, как он сможет начать обработку; Я хочу сделать так, чтобы он мог начинать обрабатывать объекты индивидуально, как только они будут готовы. Вроде как очередь сообщений.
Каков наилучший способ сделать это?