2017-02-13 6 views
3

私はオブジェクトのストリームを持っています。オブジェクトの属性のうちのいくつかだけを持つストリームを抽出する必要があります。Java 8:ストリームからサブストリームを抽出する

例えば、Stream<Car>から、私はStream<CarDetails>を抽出する必要があります。

Car { 
    String name; 
    String model; 
    Engine e; 
    CarType t; 
    ... 
} 

私はタイプCarDetailsを持つオブジェクトのStreamを抽出したい:

CarDetails { 
    String name; 
    String model; 
} 

答えて

7

あなたはmapでこれを達成することができ、あなたが必要なCarDetailsコンストラクタ持っていると仮定すると:使用して、

​​
+4

代わりにa CarDetailsFactory: 'cars.map(CarDetailsFactory :: createCarDe尾) ' または' Car'が提供する方法: 'cars.map(Car :: createDetailsObject)' –

+0

ありがとうございます。ちょっと私の質問を少しだけ拡張してください。もし 'Car.model'が'Set 'となり、私はまだ個々のモデルと車の名前で 'ストリーム'を望んでいます。 – Sneha

+2

@Snehaこの場合、 'flatMap' - ' cars.flatMap(c-> c.getModels()。stream() ).map(m->新しいCarDetails(c.getName()、m))) '。 – Eran

関連する問題