我想知道是否有可能将不同流中的数据合并成一个流。通过合并,我的意思是将其添加到单独的列中,而不是添加到现有的列中。
到目前为止,我已经能够将数据收集到单独的地图中,如下面的示例所示。我认为我应该把这些地图合并成一张,但不确定如何去做,或者我是否做错了什么。
我做了一些搜索,在FlatMap、Concat等网站上找到了一些线索,但因为我对这条流还不熟悉
例如:列出数据-1Map
[carOne,10]
列表数据-2
地图
[car三,自动]
- [carTwo,手动]
- [carOne,混合]
列表数据-3
Map
[carTwo,160.75]
- [car三,200.25]
- [carOne,250.55]
输出:[类似:
地图
[carOne,10,混合,250.55]
- [carTwo,20,手动,160.75]
- [car三,25,自动,200.25]
假设所有3个地图都有相同的密钥集,直接的解决方案是在一个地图的条目上创建一个流(例如carMileage
),并将其收集到另一个地图的DataCar中。如果有一个构造函数DataCar(mileage, String gearBox, Two 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()))
));
(注意这不是按字母顺序,蓝莓排在狒狒之前) 当然,只要有一个列表不是空的,我就可以用一个计数器在“superlist”中循环,一个接一个地向resultslist中添加项目: 但最好使用一些优化的LINQ函数来实现这一点。我一直在研究Zip、GroupBy和Aggregate,但无法使它们工作。 那么:有没有一个漂亮的LINQ函数,或者多个函数的组合,可以把它变成漂亮的代码,或者我应该坚持(也许优
问题内容: 已关闭 。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗? 更新问题,以便通过编辑此帖子以事实和引用的形式回答。 7年前关闭。 改善这个问题 我想将排序的列表合并到一个列表中。这个解决方案如何?我相信它运行时间为O(n)。有任何明显的缺陷,效率低下或样式问题吗? 我真的不喜欢为“这是第一次迭代”设置标志并使用它来确保“最低”具有默认值的习惯用法。有没有更好的办法解决呢? 注
Java8在收集器中提供了一个groupingBy函数,但它给出了元素的映射。我需要把地图转换成单个列表。 它还返回结果,但我想要的是对列表本身执行分组操作,这样我就不必重新分配它,因为在lambda表达式中不可能重新分配。 但是nodelistgrouped.values()返回Collection(List)
我在Access中有一个数据集,如下图所示 但我希望是这样 有什么办法吗?非常感谢您的帮助,因为我是ms access的新手。
问题内容: 我想将3个列表合并到一个列表中。例如,我有三个列表: 最后我想得到 出,, 有没有更快的方法来合并这三个列表?这是我的代码: 问题答案:
问题内容: 如果要在Java中将两个列表合并为一个,可以使用。但是,如果我想合并多个列表怎么办? 这有效: 但这似乎并不是最好的解决方案,阅读起来也不是特别好。可悲的是不起作用。对于我来说,多次使用并为所有条目重复创建自己的列表似乎也不理想。那我该怎么办呢? 问题答案: 借助下面的代码中所示的Stream API, Java 8可以轻松实现这一目标。我们基本上已经创建了一个包含所有列表的流,然后,