gpt4 book ai didi

Java 8 Streams在过滤映射后获取原始对象

转载 作者:行者123 更新时间:2023-12-04 08:01:31 25 4
gpt4 key购买 nike

我必须获取未付款发票的收据 ID。订单有多个收据,收据有发票。我正在使用 Java 8 流。从收据流中,我只能获取发票列表,但我想获取未付款发票的收据 ID
这是我的代码:

List<Invoice> invoicesNotPaid = receipts.stream()
.map(ReceiptsVO::getInvoices)
.flatMap(List::stream)
.map(inv -> Invoice.builder().status(InvoiceStatus.getStatus(inv.getStatus().name())).build())
.filter(Invoice::hasNotBeenPaid).collect(Collectors.toList());
经过最终过滤后,我只收到发票,无法获得原始收据对象引用。在根据未支付的发票检查收据后,我必须做一些如下的事情。
receipts -> receipt.getReceiptId()
如何获取未付款发票的收据 ID?

最佳答案

您可以流式传输 receipts然后检查至少一个 invoive收据未付款,然后收集那些收据 ID

List<Integer> receiptIdNotPaid = receipts.stream()
.filter(receipt-> receipt.getInvoices().stream()
.map(inv->Invoice.builder().status(InvoiceStatus.getStatus(inv.getStatus().name())).build())
.anyMatch(Invoice::hasNotBeenPaid))
.map(Receipt::getReceiptId)
.collect(Collectors.toList());

关于Java 8 Streams在过滤映射后获取原始对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66445087/

25 4 0