処理しようとしているJPAリポジトリにいくつかのデータが格納されています。私はJava 8 Streamsを使用することができますが、必要な情報を取得する方法を理解することはできません。この特定の「エンティティ」は実際にはリカバリのためのものなので、停電や再起動の後に処理する必要のあるアイテムが保持されます。問題は、一番最後に呼ばれる2つのパラメータ法から生じるJava 8ストリームでマッピング・パイプラインから複数のアイテムを使用できるか
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());
}
:forループのコードは次のようになり前のJava 8を使用して
。ストリームを使用して、私は私がするだろうと信じて:
// 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を使用する方法がありますか?
あなたmap
操作上の
申し訳ありませんが、私は「ホルダー」に関する注釈を見逃しました。私はそれが最高の答えだと思います。最初は、私は「ペア」が好きではなかった。なぜなら、それは拡大縮小していない(はい、私は「トリプル」について知っている)、そこにはないかもしれない関係も伝えているからだ。 「ホルダー」は、IMOの最も一般的な解決策です。 – JoeG
@JoeGを参考にしてください。http://stackoverflow.com/questions/43973776/what-is-equivalent-to-c-sharp-select-clause-in-java-streams/43983558#43983558絶対に重要な方法ではありません。 – Eugene