我有一组对象。我想根据某些标准对其进行过滤,符合标准的标准,我想要执行一些操作&然后再做一些映射。
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'。如果我删除forEach它的工作原理。我知道forEach是一个终端操作,但我想不出替代方案。
答案 0 :(得分:3)
您可以使用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()));