У меня есть List
который выглядит следующим образом:
List<List<Class2>> list = new ArrayList<>();
List<Class2> l1 = new ArrayList<>();
l1.add(new Class2(new Class3()));
l1.add(new Class2(new Class3()));
l1.add(new Class2(new Class3()));
list.add(l1);
List<Class2> l2 = new ArrayList<>();
l2.add(new Class2(new Class3()));
l2.add(new Class2(new Class3()));
l2.add(new Class2(new Class3()));
list.add(l2);
Как преобразовать list
List
в List<Class3>
с помощью Java 8 Stream API?
Так как вы передаете в Class2
конструктор экземпляра Class3
, я предполагаю, что Class2
имеет Class3
элемент с геттер (назовём геттерного getClass3()
).
Исходя из этого, вы можете сделать следующее, чтобы получить List<Class3>
всех Class3
членов всех Class2
членов всех списков, содержащихся в list
:
List<Class3> listOf3 =
list.stream()
.flatMap(List::stream) // convert a Stream<List<Class2>> to Stream<Class2>
.map(Class2::getClass3) // convert a Stream<Class2> to Stream<Class3>
.collect(Collectors.toList()); // collect to a List<Class3>
Class3