use*_*714 1 java lambda list arraylist
我有一个包含人员的列表,每个人都有一个列表,里面有他的主题.
我需要使用lambda返回一个包含每个主题的Set,到目前为止我已经尝试过:
list.stream().map(person -> person.getSubjects());
Run Code Online (Sandbox Code Playgroud)
但那会让我得到一个List>所以我不能使用它.
我如何使用lambdas打印/获取每个人的列表中的每个字符串?
谢谢.
list.stream().map(person -> person.getSubjects().stream());不是List,它是一个Stream.如果你想要Set,请执行以下操作:
list.stream().flatMap(person -> person.getSubjects().stream()).collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
这将创造一个HashSet<Subject>.请注意使用flatMap而不是map将主题列表展平为单个流.Set例如TreeSet,如果您想要其他实现,请执行以下操作:
list.stream().flatMap(person -> person.getSubjects().stream())
.collect(Collectors.toCollection(TreeSet::new));
Run Code Online (Sandbox Code Playgroud)