gpt4 book ai didi

java - 我如何创建一个 HashMap 来迭代 lambda 函数?

转载 作者:行者123 更新时间:2023-11-30 06:06:00 24 4
gpt4 key购买 nike

有什么方法可以在 lambda 函数内创建这个 HashMap 吗?

        Map<SaleStatus, Long> sales = new HashMap<>();
saleStatusCounters.forEach(saleStatusCounter -> sales.put(saleStatusCounter.getStatus(), saleStatusCounter.getMatches()));

类似这样的事情:

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

最佳答案

您的代码原样没问题。尽管如此,您可以使用流和 Collectors.toMap 得到你想要的结果:

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

注意:只要 map 中没有冲突,即只要您没有两个或多个具有相同状态的销售状态计数器对象,此操作就有效。

如果列表中有多个具有相同状态的元素,则应使用 Collectors.toMap that expects a merge function 的重载版本。 :

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

这里Long::sum BinaryOperator<Long> 合并映射到同一键的两个值。

关于java - 我如何创建一个 HashMap 来迭代 lambda 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45198113/

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