Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分组列表<;客户订单>;进入地图<;性别、金钱>;_Java_Java 8_Java Stream - Fatal编程技术网

Java 分组列表<;客户订单>;进入地图<;性别、金钱>;

Java 分组列表<;客户订单>;进入地图<;性别、金钱>;,java,java-8,java-stream,Java,Java 8,Java Stream,我想实现java流媒体的等效功能: public class CustomerOrder { private final Gender gender; private final Order order; public Gender getGender() { return gender; } public Order getOrder() { return order; } } public class

我想实现java流媒体的等效功能:

public class CustomerOrder {

    private final Gender gender;
    private final Order order;

    public Gender getGender() {
        return gender;
    }

    public Order getOrder() {
        return order;
    }

}

public class Order {

    private final long orderAmount;

    public long getOrderAmount() {
        return orderAmount;
    }

}
谢谢

编辑:我过度简化了问题-CustomerOrder包含一个订单,其中包含orderAmount

我设法通过以下方式获得了
地图

SELECT Gender, SUM(orderAmount) FROM orders
GROUP BY Gender;
Map Map=orders.stream()
.collect(收集器.groupingBy(CustomerOrder::getGender))
编辑

list.stream().collect(Collectors.groupingBy(CustomerOrder::getGender,
            Collectors.summingLong(CustomerOrder::getOrderAmmount));
我没有编译这个,但应该可以工作(使用较小的替换)。

您可以使用,它有3个参数:

  • 生成关键点的映射函数
  • 生成值的映射函数
  • 一种合并函数,用于解决与同一键关联的值之间的冲突
代码如下:

list.stream().collect(Collectors.groupingBy(CustomerOrder::getGender,
            Collectors.summingLong(co -> co.getOrder().getAmmount()));

你试过什么吗?是的,用我试过的方法编辑了问题。我已经编辑了问题,你能相应地更新你的答案吗?谢谢你的代码不太正确。collect方法接受一个或三个参数,而不是两个。您要查找的是
stream.collect(Collectors.groupingBy(CustomerOrder::getGender,Collectors.summingit(co->co.getOrder().getAmount())
,即带有2个参数的Collectors.groupingBy。
list.stream().collect(Collectors.groupingBy(CustomerOrder::getGender,
            Collectors.summingLong(co -> co.getOrder().getAmmount()));
Map<Gender, Long> result = customerOrders.stream()
    .collect(Collectors.toMap(
        CustomerOrder::getGender,
        co -> co.getOrder().getOrderAmount(),
        Long::sum));
Map<Gender, Long> result = customerOrders.stream()
    .collect(Collectors.toMap(
        CustomerOrder::getGender,
        co -> co.getOrder().getOrderAmount(),
        Long::sum,
        TreeMap::new));