gpt4 book ai didi

lambda - 无法解析方法 'map' Java 8 Lambda

转载 作者:行者123 更新时间:2023-12-04 02:06:25 25 4
gpt4 key购买 nike

我有一组对象。我想根据特定条件过滤它,满足条件的那些,我想执行一些操作,然后再做一些映射。

Set<Tasks> v1;
Map<V, Long> vC = v1.stream()
.filter(t -> someCondition(t))
//for these filtered operations perform some action
.forEach(t -> t.performAction(summation(t))
.map(t->summation(t))
.collect(groupingBy(identity(), counting()));

我在 map Cannot resolve method 'map' 处收到错误消息。如果我删除 forEach 它会起作用。我知道 forEach 是一个终端操作,但我想不出替代方法。

最佳答案

编辑:今天(2019 年 11 月)我对这个答案不满意。

问题是 Stream.peek 方法没有被正确使用。事实上,peek 仅用于调试目的。

而且,正如@Holger 在评论部分所述,summation 方法被调用了两次,这清楚地表明这不是一个好的答案。

我将我的原始答案保留在下面,以提醒自己和其他人,有时流并不是最合适的。


您可以使用 peek操作来实现你想要的:

Map<V, Long> vC = v1.stream()
.filter(t -> someCondition(t))
.peek(t -> t.performAction(summation(t))
.map(t->summation(t))
.collect(groupingBy(identity(), counting()));

关于lambda - 无法解析方法 'map' Java 8 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43082349/

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