私は3つのクラス、すなわちエンジン、ホイール、オートモービルを持っています。次のようにこれらのクラスの内容は以下のとおりです。 -ブール値をJava 8ストリームに返すネストされたforループを変換しますか?
class Engine {
String modelId;
}
class Wheel {
int numSpokes;
}
class AutoMobile {
String make;
String id;
}
私はList<Engine>
、List<Wheel>
と私はを反復処理し、特定の条件をチェックする必要がList<Automobile>
を持っています。この条件を満たすエンティティが1つ存在する場合は、真を返す必要があります。それ以外の場合はfalseを返します。次のように
機能は次のとおりです。
Boolean validateInstance(List<Engine> engines, List<Wheel> wheels , List<AutoMobile> autoMobiles) {
for(Engine engine: engines) {
for(Wheel wheel : wheels) {
for(AutoMobile autoMobile : autoMobiles) {
if(autoMobile.getMake().equals(engine.getMakeId()) && autoMobile.getMaxSpokes() == wheel.getNumSpokes() && ....) {
return true;
}
}
}
}
return false;
}
私は今、この
試してみたreturn engines.stream()
.map(engine -> wheels.stream()
.map(wheel -> autoMobiles.stream()
.anyMatch(autoMobile -> {---The condition---})));
まで私が(マップを知っている必要があり)、使用する適切な機能ではありません。私はこのシナリオをどのように解決するかについて迷っています。私は、APIのドキュメントを通過し、forEach()の結果を試してみました。私はreduce()APIを使いましたが、使い方がわかりません
私はマップがあるストリームを別のストリームに変換することを知っています。誰もこのシナリオを解決する方法を提案することはできますか?
あなたのクラスがいくつかのフィールドを欠場するようです。例が正しいと確信していますか? – Eugene
@Eugene、これはプロジェクト全体の小さなスナップショットです。読みやすさを高めるために多くのプロパティをカプセル化しています。 – Echo
これで、* testable *の例になります。私たちはここで推測しています...実際に*正確な条件が欲しいと確信していますか?* – Eugene