これは、ワンライナーをストリームに変換することができますか?

ゲオルク:

これは、ストリーム機能として、よりきれいに書くことができれば、私は疑問に思って:

MyObject myObject = new MyObject();

for (Thing thing : listofThings) {
    myObject = myObject.combine(thing);
}
彼らは次のとおりでした:

はい、使用しStreamreduce

MyObject myObject = listofThings.stream()
                                .reduce(new MyObject(),
                                        MyObject::combine,
                                        MyObject::combiner);

ここcombinerMyObject別のかかる方法MyObjectのインスタンスを、現在のオブジェクトにそれを組み合わせます。

別の方法としては、まず可能にインスタンスその後、インスタンス、および単一にこれらのインスタンスを減らすインスタンス:mapThingMyObjectMyObject

MyObject myObject = listofThings.stream()
                                .map(new MyObject()::combine)
                                .reduce(MyObject::combiner)
                                .orElseGet(MyObject::new);

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=223195&siteId=1
おすすめ