Java8:从流中提取子流
我有一个对象流,我需要从中提取一个只有一些对象属性的流 例如,从Java8:从流中提取子流,java,java-8,java-stream,Java,Java 8,Java Stream,我有一个对象流,我需要从中提取一个只有一些对象属性的流 例如,从流,我需要提取流 我想提取类型为CarDetails的对象的流: CarDetails { String name; String model; } 假设您拥有所需的CarDetails构造函数,您可以使用map实现这一点: Stream<Car> cars = ... Stream<CarDetails> details = cars.map(c -> new CarDetails(c.
流
,我需要提取流
我想提取类型为CarDetails
的对象的流
:
CarDetails {
String name;
String model;
}
假设您拥有所需的
CarDetails
构造函数,您可以使用map
实现这一点:
Stream<Car> cars = ...
Stream<CarDetails> details = cars.map(c -> new CarDetails(c.getName(),c.getModel()));
streamcars=。。。
streamdetails=cars.map(c->newcardetails(c.getName(),c.getModel());
或者,使用CarDetailsFactory:cars.map(CarDetailsFactory::createCarDetails)
或Car
提供的方法:cars.map(Car::createDetailsObject)
谢谢。。只是把我的问题再延伸一点。。如果Car.model
是一个Set
,我仍然希望stream
带有单个模型和汽车名称..@Sneha在这种情况下,你可以使用flatMap
-cars.flatMap(c->c.getModels().stream().map(m->new CarDetails(c.getName(),m))
。“细节”不是“子流”。由于车辆已被操作,您不能再使用车辆流。如果您需要来自汽车的另一个流,则需要创建一个新的汽车流。
Stream<Car> cars = ...
Stream<CarDetails> details = cars.map(c -> new CarDetails(c.getName(),c.getModel()));