【发布时间】:2015-08-26 08:51:38
【问题描述】:
我有以下课程(带有吸气剂):
public class AlgorithmPrediction {
private final String algorithmName;
private final Map<BaseDatabaseProduct, Double> productsToAccuracy;
}
现在我想从由AlgorithmPrediction 对象填充的集合中创建一个映射,其中algorithmName (unique) 作为键,productsToAccuracy 作为值。我想不出比这更复杂的东西了:
algorithmPredictions.stream()
.collect(
groupingBy(
AlgorithmPrediction::getAlgorithmName,
Collectors.collectingAndThen(
toSet(),
s -> s.stream().map(AlgorithmPrediction::getProductsToAccuracy).collect(toSet())
)
)
);
这不可能。我错过了什么?谢谢!
【问题讨论】:
-
大概可以保证
algorithmName是唯一的吧?否则你获得的地图会丢失初始集合中的一些信息。 -
@Oly'Oil'Sourbut 忘了说它是独一无二的。我更新了我的问题。谢谢。
-
请注意,即使使用非唯一键并使用
groupingBy,您也可以更简单:. collect(groupingBy(AlgorithmPrediction::getAlgorithmName, mapping(AlgorithmPrediction::getProductsToAccuracy, toSet())));
标签: java lambda java-8 grouping collectors