Я пытаюсь лучше понять, как использовать потоки Java. У меня есть эти классы:
public class Plan {
List<Request> requestList;
}
public class Request {
List<Identity> identityList;
boolean isCancelled;
}
public class Identity {
String idNumber;
}
Я пытаюсь написать метод, который возвращает план, который содержит неотмененный запрос с соответствующим идентификационным номером.
Вот что я пробовал:
public static Plan findMatchingPlan(List<Plan> plans, String id) {
List<Plan> filteredPlan = plans.stream()
.filter(plan -> plan.getRequestList().stream()
.filter(request -> !request.isCancelled())
.filter(request -> request.getIdentityList().stream()
.filter(identity -> identity.getIdNumber().equals(id))))
.collect(Collectors.toList());
}
Это дает мне ошибку:
java.util.stream.Stream<com.sandbox.Identity> cannot be converted to boolean
Я вроде понимаю, почему возникает ошибка. Вложенный фильтр возвращает фильтр, который не может быть оценен как логическое значение. Проблема в том, что я не знаю, чего мне не хватает.
Любая помощь будет оценена.