:
String code = "searchcode";
Inner result;
for (Outer outer : outerList) {
for (Middle middle : outer.getMiddleList()) {
Inner inner = middle.getResultForCode(code);
if (inner != null) {
result = inner;
}
}
}
は、私が "内側" または "inner.getRelevantThing()" のような
何かを取得したいです。
Optional<Inner> result = outerList.stream()
.flatMap(outer -> outer.getMiddleList().stream())
.map(middle -> middle.getResultForCode(code))
.filter(Objects::nonNull)
.findAny();
(あなたのコードがやったようfindAny
が任意の一致する項目ではなく、最後に一致する項目を見つけることに注意してください。)
あなたは「関連の事を」したい場合は、Optional<Inner>
へのマッピングを適用することができます。
outerList.stream()
.flatMap(outer -> outer.getMiddleList().stream())
.map(middle -> middle.getResultForCode(code))
.filter(Objects::nonNull)
.findAny()
.map(Inner::getRelevantThing);
'outerList.stream()のようなものがflatMap - \t .MAP(中央 - > middle.getResultForCode(コード))(オブジェクトをフィルタリングする。(外> outer.getMiddleList()ストリーム()): :nonNull).findFirst()。map(Inner :: getRelevantThing).orElse(null) '? –