Java 嵌套列表的集合
我正在尝试将Java8特性用于嵌套列表 我有一个物品清单。对象有一个列表字段。我需要获取该列表的值,并将其添加到另一个列表中Java 嵌套列表的集合,java,list,java-stream,Java,List,Java Stream,我正在尝试将Java8特性用于嵌套列表 我有一个物品清单。对象有一个列表字段。我需要获取该列表的值,并将其添加到另一个列表中 List<String> strings = new ArrayList<>(); strings.add("s1"); strings.add("s2"); List<Foo> foos = new ArrayList<>(); foos.add(new Foo(strings)); 我想要一个这样的新列表: List
List<String> strings = new ArrayList<>();
strings.add("s1");
strings.add("s2");
List<Foo> foos = new ArrayList<>();
foos.add(new Foo(strings));
我想要一个这样的新列表
:
List newList=代码>因此s1
,s2
,来自字符串的列表将显示在newList
使用flatMap
。替换:
.map(Foo::getStrings)
与
或
两者都显示不兼容的类型。必需列表,但flatMap被推断为流:不存在类型为R的实例,因此流符合列表
。错误。@ENIS您是否已将newList
的类型从List
更改为List
?是的,我更改了。我尝试了这种方法,它是有效的:userRoles.stream().map(RoleDTO::getPrivileges).flatMap(Collection::stream.collector(Collectors.toList())
但是这部分.flatMap(Collection::stream).collect(Collectors.toList())
看起来不太好。@如果API就是这样定义的,您就不能更改that@Lino那么有两个集合就可以了?我觉得这不对。谢谢
.map(Foo::getStrings)
.flatMap(f -> f.getStrings().stream())
.map(Foo::getStrings).flatMap(Collection::stream)