Java - 将多个列表数据组合成一个单独的列列表

标签 java java-8 java-stream

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

到目前为止,我已经能够将数据收集到单独的 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/

相关文章:

java - jmeter 无法运行!无法找到 Java 可执行文件或版本。请检查您的 Java 安装”

java - 在从属节点上执行的 Hadoop java 映射器作业,目录问题

java - 在intellij中显示流管道的推导类型

java-8 - java 8流按列表过​​滤

Java 8 Streams 查找元素并将其添加到新列表的开头

java - map <X, map <Y, Z> 到 map <Y, map <X, Z>

java - 如何交替两个imageview?安卓

java - 如何从 ResponseEntity 中提取对象列表?

java - 如何将增量值分配给 Java 8 中的列表

java - Kotlin Stream peek(...) 方法