java - 列表包含要在 java 中使用 lambda 设置的另一个列表

标签 java list arraylist lambda

我有一个包含人物的列表,每个人都有一个列表,里面有他的主题。

我需要使用 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/

相关文章:

java - 从文件中获取数字并添加

java - 使用 Tomcat 提供所有 Web 内容

java - 将 String 'temp' 值的每个新值添加到 ArrayList 中,而不覆盖之前的 'temp'

python - 从列表中填充字典值

python - 是否有一种非递归方法将每个列表元素分成自己的列表?

c# - 通用 IList<T> 的 "type"是什么?

java - 如何编写一个以整数 ArrayList 作为输入并返回最小整数的递归方法?

java - Android 将 ArrayList<Model> 从 Activity 传递给 Fragment

java - 下载音频文件

java - 不可变 pojo 和单个字段更改的合理模式