当前位置: 首页 > 知识库问答 >
问题:

Java-将多个列表数据合并到单个单独的列列表中

潘泳
2023-03-14

我想知道是否有可能将不同流中的数据合并成一个流。通过合并,我的意思是将其添加到单独的列中,而不是添加到现有的列中。

到目前为止,我已经能够将数据收集到单独的地图中,如下面的示例所示。我认为我应该把这些地图合并成一张,但不确定如何去做,或者我是否做错了什么。

我做了一些搜索,在FlatMap、Concat等网站上找到了一些线索,但因为我对这条流还不熟悉

例如:列出数据-1Map

  • [carOne,10]

列表数据-2地图

  • [car三,自动]
  • [carTwo,手动]
  • [carOne,混合]

列表数据-3Map

  • [carTwo,160.75]
  • [car三,200.25]
  • [carOne,250.55]

输出:[类似:地图

  • [carOne,10,混合,250.55]
  • [carTwo,20,手动,160.75]
  • [car三,25,自动,200.25]

共有1个答案

萧元徽
2023-03-14

假设所有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可以轻松实现这一目标。我们基本上已经创建了一个包含所有列表的流,然后,