我一直在尝试做一些看似简单的事情,但到目前为止都没有成功。我有一个Map列表,它们来自一堆并行的CompletableFutures,然后需要将结果合并。由于映射中的键是唯一的,因此我需要合并值并生成一个新的与组合后的SomeType列表相关联的唯一键的映射。例如:
Map1: key1:Sometype1 key2:Sometype2
Map2: key1:Sometype3 key2:Sometype4
所需的最终结果: Map3: key1:Sometype1,Sometype3 key2:Sometype2,Sometype4
我尝试使用groupBy和其他方法,但它们中的大多数似乎都假定要首先使用List而不是Map进行操作,因此我无法找到一个简单直接的方法来完成它。
到目前为止,我的代码大致如下:
Map<String, List<Sometype>> volPercent = waitGroup.stream()
.map(CompletableFuture::join)
.flatMap((e) -> e.entrySet().stream())
.collect(Collectors.groupingBy());
我不确定需要在分组部分中放置什么。我尝试使用Map.Entry::getKey,但它无法编译:
Error:(69, 25) java: incompatible types: inference variable T has incompatible bounds
equality constraints: com.Sometype
lower bounds: java.util.Map.Entry<java.lang.String,com.Sometype>
CompletableFuture
有点分散注意力。未来的问题最好从更明确的输入开始。但我想我能够解决它。 - Stuart Marks