sfa*_*ler 5 java java-8 java-stream
我有一个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);
Run Code Online (Sandbox Code Playgroud)
如何使用 Java 8 Stream API将 转换List list为 a ?List<Class3>
Class2由于您将的实例传递给构造函数Class3,我假设Class2有一个Class3带有 getter 的成员(让我们调用 getter getClass3())。
基于这个假设,您可以执行以下操作来获取中包含的所有列表的所有成员的List<Class3>所有Class3成员:Class2list
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>
Run Code Online (Sandbox Code Playgroud)