从Hashmap的所有值中获取所有嵌套项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Hashmap的所有值中获取所有嵌套项相关的知识,希望对你有一定的参考价值。

我使用HashMap将键作为字符串,值为ArrayList

HashMap<String, ArrayList<Student>> students;

如何取回所有Student对象,即所有ArrayList对象的所有元素?

答案

如果你想要所有的Students,你可以Stream超过values()Map并用Stream压扁flatMap

List<Students> studentList = students.values() // Collection<ArrayList<Students>>
                                     .stream() // Stream<ArrayList<Students>>
                                     .flatMap(List::stream) // Stream<Students>
                                     .collect(Collectors.toList());

如果你不能使用Java 8,你将不得不迭代values()Map并将它们全部添加到List

List<Students> studentList = new ArrayList<>();
for (ArrayList<Students> list : students.values())
    studentList.addAll(list);
另一答案
ArrayList<Students> studentList = students.get("stringKey");

如果你想获得所有学生名单。

声明一个单独的数组列表并使用addAll()方法。

for (String key : studentList .keySet()) {
       finalList.addAll(studentList.get(key));
}
另一答案

您可以使用values()函数将学生地图中的所有ArrayLists转换为单个Collection对象。然后我们可以通过以下方法将集合转换为ArrayList。

Collection<ArrayList<Students>> studentCollection = students.values();
List<Students> studentList = new ArrayList<Students>(studentCollection);

以上是关于从Hashmap的所有值中获取所有嵌套项的主要内容,如果未能解决你的问题,请参考以下文章

从嵌套 recyclerview 的所有输入框中获取所有编辑文本正在获取最新的 recyclerview 项目而不是所有数据

如何从所有序列的Y值中获取特定的X值(OxyPlot)

获取嵌套数组/对象的数组中的所有唯一值(删除重复项)

从片段中获取输入数据

Laravel 嵌套的 foreach 返回重复项

从单个按钮从多个片段中提取数据