gpt4 book ai didi

java - 如何使用 java 8 流和 lambda 对 groupingBy 结果进行平面映射

转载 作者:搜寻专家 更新时间:2023-11-01 01:06:02 24 4
gpt4 key购买 nike

我有一个包含其他对象列表的对象,我想返回由容器的某些属性映射的包含对象的平面图。是否可以只使用流和 lambda?

public class Selling{
String clientName;
double total;
List<Product> products;
}

public class Product{
String name;
String value;
}

让我们假设一个操作列表:

List<Selling> operations = new ArrayList<>();

operations.stream()
.filter(s -> s.getTotal > 10)
.collect(groupingBy(Selling::getClientName, mapping(Selling::getProducts, toList());

结果会很好

Map<String, List<List<Product>>> 

但我想把它压平

Map<String, List<Product>>

最佳答案

你可以尝试这样的事情:

Map<String, List<Product>> res = operations.parallelStream().filter(s -> s.getTotal() > 10)
.collect(groupingBy(Selling::getClientName, mapping(Selling::getProducts,
Collector.of(ArrayList::new, List::addAll, (x, y) -> {
x.addAll(y);
return x;
}))));

关于java - 如何使用 java 8 流和 lambda 对 groupingBy 结果进行平面映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32252628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com