【发布时间】:2017-04-11 02:53:26
【问题描述】:
看看这段代码。
// group by price, uses 'mapping' to convert List<Item> to Set<String>
Map<BigDecimal, Set<String>> result =
items.stream().collect(
Collectors.groupingBy(Item::getPrice,
Collectors.mapping(Item::getName, Collectors.toSet())
)
);
groupingBy 和 Mapping 可以互换吗?它们有什么区别?
对于 collect() 中的第三个参数,如果我使用 Collectors.toList() 而不是 Collectors.toSet(),我会得到相同的输出类型 Map 吗?我听说 toList() 是一个更受欢迎的选项。
【问题讨论】:
-
toList()“更受欢迎”,因为它是未指定其他收集器时的默认值,即Collectors.groupingBy(Item::getPrice)与Collectors.groupingBy(Item::getPrice, Collectors.toList())具有相同的结果。
标签: java java-8 java-stream collectors