嵌套列表的集合

Eni*_*iss 3 java list java-stream

我正在尝试将Java 8功能用于我的嵌套列表.

我有一个对象列表.该对象具有列表字段.我需要获取该列表的值并将其添加到另一个列表中.

List<String> strings = new ArrayList<>();
strings.add("s1");
strings.add("s2");

List<Foo> foos = new ArrayList<>();
foos.add(new Foo(strings));
Run Code Online (Sandbox Code Playgroud)

我推出了这种方法 foos.stream().map(Foo::getStrings).collect(Collectors.toList());

如果我像这样设置我的新列表,这种方法有效:

List<List<String>> newList = foos.stream().map(Foo::getStrings).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

我想有一个newList像这样的: List<String> newList = ....;那么s1,s2strings列表将被所示newList.

And*_*ner 10

使用flatMap.更换:

.map(Foo::getStrings)
Run Code Online (Sandbox Code Playgroud)

.flatMap(f -> f.getStrings().stream())
Run Code Online (Sandbox Code Playgroud)

要么

.map(Foo::getStrings).flatMap(Collection::stream)
Run Code Online (Sandbox Code Playgroud)