我有一个包含其他对象列表的对象,并且我想返回由容器的某些属性映射的所包含对象的平面图。如果可以仅使用stream和lambdas的话吗?
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 lambda对列表进行排序。 如何以相反的方式对其进行排序? 我看到了这篇文章,但是我想使用java 8 lambda。 这是我的代码(我用* -1)作为破解 问题答案: 您可以调整在Java中如何以降序对ArrayList 排序的方法中链接的解决方案通过将其包装在lambda中: 请注意, f2 是的第一个参数,而不是第二个,因此结果将相反。
我有一个复杂的要求,列表中记录有注释。我们有一个报告的功能,每个变化都应该被记录和报告。因此,根据我们的设计,即使单个字段已更新,我们也会创建一个全新的记录。 现在,我们希望将注释的历史记录(按时间戳反向排序)存储在数据库中。运行查询后,我得到了评论列表,但它包含重复的条目,因为其他一些字段被更改。它还包含空条目。 我编写了以下代码来删除重复和空条目。 这个逻辑工作正常,现在已经过测试了,但是我想
我正在使用java lambda对列表进行排序。 我怎样才能反向排序呢?
我有一个HashMap,我需要使用一些函数对其进行筛选: 上述代码中的错误是变量的声明类型。应该是而不是。 所以现在的功能代码是:
我正在使用我有一个类,如下所示: 现在我想做的是: 筛选出senderId无效的记录(使用映射) 下面是我的代码: 这给我带来了一个错误: 错误:(105,90)java:找不到适用于groupingBy(共享[…]的方法gMode,java。util。作用函数)方法java。util。流动收藏家。groupingBy(java.util.function.function)不适用(无法推断类型变