Мне нужно найти какой-нибудь объект из вложенного List
.
Я считаю, что код класса не нужен, потому что фильтрация раскрывается во вложенном For-Each Loop
.
int value = someValue;
MyObject found = null;
for (List<MyObject> list : nestedList) {
for (MyObject myObject : list) {
if (myObject.isType() && myObject.getValue() == value) {
found = myObject;
}
}
}
Другое вложенное для:
List<MyObject> listMyObject = new ArrayList<>();
for (List<MyObject> list : nestedList) {
for (MyObject myObject : list) {
if (myObject.isType() && myObject.getValue() == value) {
listMyObject.add(myObject);
}
}
}
Я начал с этого кода, но я в замешательстве.
nestedList.stream()
.forEach(list -> list.stream()
.filter(myObject -> myObject.isType() && myObject.getValue() == value)
.findAny()
);
Как заменить For-Each Loop
в моем коде с помощью потоков?
Решение для второго цикла for
listMyObject = nestedList.stream()
.flatMap(List::stream)
.filter(myObject -> myObject.isType() && myObject.getValue() == value)
.collect(Collectors.toList());