我有一个HashMap,每个键的值都是一个用户定义的对象。该用户定义的对象具有ArrayList类型的变量。如何使用Java流API将ArrayList提取到一个列表中。因此,我的HashMap的大小为3。每个用户定义的对象内部的数组列表的大小为1。最后应该是大小为3的数组列表。
我的对象是
class XYZ{
List<ABC> list;
}
我的地图具有值{"1", XYZ_1},{"2",XYZ_2},{"3",XYZ_3}.
,我想从每个对象XYZ_1, XYZ_2,XYZ_3
提取列表
答案 0 :(得分:3)
您正在寻找Stream::flatMap
Map<Key, List<CustomClass>> map = new HashMap<>();
List<CustomClass> data = map.values().stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());
编辑
由于您的班级内部有一个列表,因此您可以将代码更改为如下形式
Map<KeyClass, CustomClass> map = new HashMap<>();
List<?> data = map.values().stream()
.map(CustomClass::getList)
.flatMap(List::stream)
.collect(Collectors.toList());