我有一个包含人物的列表,每个人都有一个列表,里面有他的主题。
我需要使用 lambda 返回一个包含每个主题的集合,到目前为止我已经试过了:
list.stream().map(person -> person.getSubjects());
但这会给我一个列表>所以我不能使用它。
我如何打印/获取每个使用 lambda 的人的列表中的每个字符串?
谢谢。
最佳答案
list.stream().map(person -> person.getSubjects().stream());
不是 List
, 这是一个 Stream
.如果你想要 Set
,这样做:
list.stream().flatMap(person -> person.getSubjects().stream()).collect(Collectors.toSet());
这将创建一个 HashSet<Subject>
.注意 flatMap
的使用而不是 map
将主题列表展平为单个流。如果你想要 Set
的另一个实现,例如 TreeSet
,执行以下操作:
list.stream().flatMap(person -> person.getSubjects().stream())
.collect(Collectors.toCollection(TreeSet::new));
关于java - 列表包含要在 java 中使用 lambda 设置的另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32998594/