我有一些數據存儲在我嘗試處理的JPA存儲庫中。我希望能夠使用Java 8 Streams來做到這一點,但無法弄清楚如何獲得所需的信息。這個特殊的「實體」實際上只是用於恢復,因此它包含了在電源故障/重啓之類的事情之後需要處理的項目。Java 8 Streams是否可以使用映射管道中的多個項目
使用前的Java 8 for循環的代碼是這樣:
List<MyEntity> deletes = myEntityJpaRepository.findByDeletes();
for (MyEntity item : deletes) {
String itemJson = item.getData();
// use a Jackson 'objectMapper' already setup to de-serialize
MyEventClass deleteEvent = objectMapper.readValue(itemJson, MyEventClass.class);
processDelete(deleteEvent, item.getId());
}
的問題,從所謂的在最後兩個參數的方法出現。使用流,我相信我會這樣做:
// deletes.stream()
// .map(i -> i.getData())
// .map(event -> objectMapper.readValue(event, MyEventClass.class))
// .forEach(??? can't get 'id' here to invoke 2 parameter method);
我有一個解決方案(沒有流),我可以住。不過,我認爲這個問題會出現很多,因此我的問題是:總的來說,是否有使用Streams來完成我想要做的事情的方法?
對不起,我錯過了關於'持有人'的說明。我認爲這是最好的答案。起初,我不喜歡「Pair」,因爲它不會擴展(是的,我知道'Triple'),也傳達了一種可能不存在的關係。持有人似乎是IMO的最佳通用解決方案。 – JoeG
@JoeG作爲一個側面說明,看看http://stackoverflow.com/questions/43973776/what-is-equivalent-to-c-sharp-select-clause-in-java-streams/43983558#43983558也爲一個絕對平凡的方式... – Eugene