我想知道是否可以将不同流中的数据组合成一个流。合并是指将其添加到单独的列中,而不是添加到现有列中。
到目前为止,我已经能够将数据收集到单独的 map 中,如下例所示。我相信我应该将这些 map 组合成一个 map ,但不确定如何去做或者我是否做错了什么。
我做了一些搜索,在 FlatMap、Concat 等上找到了一些线程,但由于我是这个 Streams & Map 功能的新手,所以我寻求指导。 (目前我在不使用 Map/Streams 功能的情况下工作,仅使用带有 Add 和 AddALL 的标准 List )
例如:
列表数据 - 1 Map<String, int> carMileage
- [carOne, 10]
- [carTwo, 20]
- [carThree, 25]
列表数据 - 2 Map<String, String> carGearBox
- [carThree,自动]
- [carTwo,手册]
- [carOne,混合]
列表数据 - 3 Map<String, Double> carMaxSpeed
- [carTwo, 160.75]
- [carThree, 200.25]
- [carOne, 250.55]
输出:[类似于:Map<String, dataCar>
]
- [carOne,10,混合,250.55]
- [carTwo,20,手动,160.75]
- [carThree,25,自动,200.25]
最佳答案
假设所有 3 个 map 都具有相同的键集,直接的解决方案是在一个 map 的条目(例如 carMileage
)上创建一个 Stream,并将其收集到另一个 map 中>数据车
。如果有一个构造函数 DataCar(mileAge, String gearBox, Double maxSpeed)
,您可以有以下内容:
Map<String, DataCar> result =
carMileage.entrySet()
.stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
e -> new DataCar(e.getValue(), carGearBox.get(e.getKey()), carMaxSpeed.get(e.getKey()))
));
关于Java - 将多个列表数据组合成一个单独的列列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36282696/