Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java8:从流中提取子流_Java_Java 8_Java Stream - Fatal编程技术网

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()));