gpt4 book ai didi

java - Java 8 Streams可以使用映射管道中的多个项目吗

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:21:49 26 4
gpt4 key购买 nike

我有一些数据存储在我正在尝试处理的 JPA 存储库中。我希望能够使用 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());
}

问题出在最后调用的两个参数方法。使用 Streams,我相信我会这样做:

//      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)。但是我认为这个问题经常出现,因此我的问题是:总的来说,有没有办法使用 Streams 来完成我想做的事情?

最佳答案

为什么Pair 不在您的map 操作中返回:

.map(i -> new Pair<>(i.getData(), i.getId()))
.map(pair -> new Pair<>(objectMapper.readValue(pair.getLeft(), MyEventClass.class), pair.getRight())
.forEach(p -> processDelete(pair.getLeft(), pair.getRight()))

我没有编译这个,所以可能有一些小问题需要修复。但一般来说,在这种情况下,您需要一个 Holder 将您的对象传递到下一阶段。 Pair 或某种类型甚至 array

关于java - Java 8 Streams可以使用映射管道中的多个项目吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43847102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com