У меня есть внешние и внутренние петли.Они выглядят так:
List<InnerObject> result = new ArrayList<>(innerObjects.size());
for (OuterObject outerObject : outerObjects) {
for (InnerObject innerObject : innerObjects) {
if (someBooleanMethod(innerObject, outerObject)) {
result.add(innerObject);
break;
}
}
}
Как вы можете видеть для каждого внешнего объекта, я зацикливаюсь на внутреннем списке и проверяю элементы, и, если они проверяются на совпадение, я добавляю внутренний объект в список результатов.
Я хочу переписать его с помощью Stream API, но я столкнулся с проблемой, что не могу собрать его в список внутренних объектов.
Решение, приведенное ниже, работает почти правильно, но создает списокOuterObjects вместо Inner.
List<OuterObject> result = outerObjects.stream()
.filter(outerObject -> innerObjects().stream()
.anyMatch(innerObject -> someBooleanMethod(innerObject, outerObject).
.collect(Collectors.toList());
Как переписать его, чтобы получить список InnerObjects
?