我想知道能否在一次遍历中将两个预排序的流合并起来。例如,如果我有以下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();
我想使用 "Mazda" 和 "Fiat" 向 Johnny 应用 addCar()
。Anne 没有汽车,Mary 不是客户。
能否在单个流上进行一次操作来合并两个流?
我看过一些解决方案,在其中一个流上多次遍历,但由于它们是预排序的,我想可能有机会一次性完成。
编辑: 操作的预期结果是两次为 "Johnny" 调用 addCar()
:一次是用 "Mazda",另一次是用 "Fiat"。