收集后在Java 8流中调用对象的方法

SS'*_*SS' 2 java lambda java-stream

假设我有这么一段代码:

Map<Consumer, Item> map = myStream.parallel()
        .filter(Objects::nonNull)
        .collect(Collectors.toConcurrentMap(e->e,
                e->e, mergeFunction));
Run Code Online (Sandbox Code Playgroud)

我想做的是在收集完成后对流的每个对象调用一个方法。

例如,

item.setDate(item.getOneDate());
Run Code Online (Sandbox Code Playgroud)

在代码按顺序循环遍历项目之前,放入地图,并在最后调用一些类似上面的代码,设置“日期”。

while(iterator.hasNext()) {
   Item blah = iterator.next();
   ....
   // code for putting into map
   ...
   blah.setDate(blah.getOneDate());
}
Run Code Online (Sandbox Code Playgroud)

不确定如何使用 Java 8 流执行此操作。forEach? peek?

Ous*_* D. 6

如果这必须在collect手术后完成,只需使用forEach

map.forEach((k, v) -> {...});
Run Code Online (Sandbox Code Playgroud)

如果您只对价值观感兴趣:

map.values().forEach(item -> {...});
Run Code Online (Sandbox Code Playgroud)

或只有键:

map.keySet().forEach(item -> {...});
Run Code Online (Sandbox Code Playgroud)