Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 如何在lambda函数中创建一个HashMap进行迭代?_Java_Lambda_Java 8 - Fatal编程技术网

Java 如何在lambda函数中创建一个HashMap进行迭代?

Java 如何在lambda函数中创建一个HashMap进行迭代?,java,lambda,java-8,Java,Lambda,Java 8,有没有办法在lambda函数中创建这个hashmap Map<SaleStatus, Long> sales = new HashMap<>(); saleStatusCounters.forEach(saleStatusCounter -> sales.put(saleStatusCounter.getStatus(), saleStatusCounter.getMatches())); Map sales=newhashmap(); f

有没有办法在lambda函数中创建这个hashmap

        Map<SaleStatus, Long> sales = new HashMap<>();
    saleStatusCounters.forEach(saleStatusCounter -> sales.put(saleStatusCounter.getStatus(), saleStatusCounter.getMatches()));
Map sales=newhashmap();
forEach(saleStatusCounter->sales.put(saleStatusCounter.getStatus(),saleStatusCounter.getMatches());
大概是这样的:

        saleStatusCounters.stream()
            .map(obj -> new HashMap<SaleStatus, Long>().put(obj.getStatus(), obj.getMatches()))
            .collect(Collectors.toMap(???)));
saleStatusCounters.stream()
.map(obj->newhashmap().put(obj.getStatus(),obj.getMatches())
.collect(Collectors.toMap(?);

您的代码很好。尽管如此,您仍然可以使用streams并获得所需的结果:

Map<SaleStatus, Long> sales = saleStatusCounters.stream()
    .collect(Collectors.toMap(obj -> obj.getStatus(), obj -> obj.getMatches()));

这里的
Long::sum
是一个将映射到同一个键的两个值合并在一起的函数。

Read….您实际上想在这里做什么?为什么
Collectors.toMap
不够?或者
SaleStatus::getStatus,SaleStatus::getMatches
?@chrylis好吧,我没有这个类的名字,
SaleStatus
getStatus()
方法返回的。对了,我在Groovy世界生活了这么久,对我来说就是
it.status
@是的!Groovy非常有表现力。我正在学习它,虽然我实际上并没有使用它。
Map<SaleStatus, Long> sales = saleStatusCounters.stream()
    .collect(Collectors.toMap(
        obj -> obj.getStatus(), 
        obj -> obj.getMatches(),
        Long::sum));