中:
私は、Java 8ストリーム形式でスニペットの下に変換することができませんよ。
List<String> titles = Arrays.asList("First Name", "Last Name");
for (FirstClass first : firstClassList) {
for (SecondClass second : first.getSecondClassList()) {
for (ThirdClass third : second.getThirdClassList()) {
if(!titles.contains(third.getField())) {
second.getThirdClassList().remove(third);
}
}
}
}
私は、フィールドの入力リストに対して、第3レベルのネストされたリストオブジェクトを比較しています。フィールドが一致していない場合、私は元のリストから削除しています。どのように私はこの使用してJava 8の構文を達成することができます。
編集:私は、FirstClassの一覧を返すことにしたいです。
ミーシャ:
私は、ストリームはこの場合には、あなたには何も勝つとは思いません。あなたが行うすべては、ネストされたリストを反復され、拡張forループまたはどちらかforEach
がより簡単です。
改善は使用してから来ることができるremoveIf
ループの外に拒否ロジックを移動するから、多分、リストを変更すると:
Predicate<ThirdClass> reject = third -> !titles.contains(third.getField());
firstClassList.forEeach(first ->
first.getSecondClassList().forEach(second ->
second.getThirdClassList().removeIf(reject)
)
);