[英]Calling method on object in Java 8 stream after collecting
假設我有這段代碼:
Map<Consumer, Item> map = myStream.parallel()
.filter(Objects::nonNull)
.collect(Collectors.toConcurrentMap(e->e,
e->e, mergeFunction));
我想做的是在收集完成后在流的每個對象上調用一個方法。
例如,
item.setDate(item.getOneDate());
在完成的代碼依次遍歷各個項目之前,將它們放入地圖中,最后像上面的代碼一樣調用一部分代碼,設置一個“日期”。
while(iterator.hasNext()) {
Item blah = iterator.next();
....
// code for putting into map
...
blah.setDate(blah.getOneDate());
}
不確定如何使用Java 8流。 forEach
? peek
?
如果必須在執行collect
操作之后執行此操作,請使用forEach
:
map.forEach((k, v) -> {...});
如果您只對值感興趣:
map.values().forEach(item -> {...});
或僅按鍵:
map.keySet().forEach(item -> {...});
我同意吉加爾·喬希 ( Jigar Joshi)的觀點 。 map
操作更加簡潔。 如果不需要中間對象,則返回相同的對象:
myStream.parallelStream()
.map(i -> { i.setDate(i.getOneDate()); return i; })
...
也就是說,我將避免在Stream
的中間對對象進行變異。 這是不好的做法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.