您好,我有一个已删除标志的 dtos 列表。我需要过滤它们并返回一个。
逻辑是,如果列表中有两项并且其中一项被删除,我将获取未删除的一项,但如果只有一项并已删除,则我将其返回。
所以基本上订单不是删除>删除>新项目。
List<Item> existingItems = service.getItems();
existingItems.stream().filter(e -> !e.getIsDeleted()).findAny().orElse(new Item());
如何修改此
Stream
管道以实现所需的逻辑? 最佳答案
您可以通过对 getIsDeleted
进行排序来实现此目的:
existingItems.stream()
.sorted( Comparator.comparing(Item::getIsDeleted ) )
.findFirst()
.orElseGet(Item::new);
此解决方案假定
existingItems
包含少量项目。关于Java 流过滤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45027510/