Мне было интересно, смогу ли я присоединиться к двум предварительно отсортированным потокам (за один проход). Например, если у меня есть следующие Java классы:
public class Person { // constructor & getters ommitted
private String name;
private int salary;
private List<Car> cars;
public void addCar(Car c) { cars.add(c); }
}
public class Car { // constructor & getters ommitted
private String owner;
private String brand;
}
И у меня есть предварительно отсортированные потоки, как в:
Stream<Person> clients = Arrays.asList(
new Person("Anne", 500),
new Person("Johnny", 340)
).stream();
Stream<Car> cars = Arrays.asList(
new Car("Johnny", "Mazda"),
new Car("Johnny", "Fiat"),
new Car("Mary", "Volvo")
).stream();
Я хотел применить addCar()
к Джонни с "Маздой" и "Фиатом". Для Анны нет машины, и Мэри не является клиентом.
Возможно ли объединить оба потока с помощью одного прохода по потокам?
Я видел решения, когда проходит один поток. несколько раз, но так как они предварительно заказаны, я думаю, что может быть шанс сделать это за один проход.
EDIT : ожидаемый результат операции будет вызывать addCar()
дважды для «Джонни»: один раз с «Маздой», один раз с «Фиатом».