Java筛选器不能返回布尔值



我正在尝试制作一个过滤器,用于过滤具有相同2个属性的不同对象。

我知道使用distinct还有其他方法可以做到这一点,但我想在过滤器中使用过滤器。我有以下代码:

filteredOrderLines.stream().filter(o -> filteredOrderLines.stream().filter(o2 -> o.getOrderId().equals(o2.getOrderId()) && o.getProductId().equals(o2.getProductId()))).collect(Collectors.toList());

我得到:

Bad return type in lambda expression: Stream<OrderLineDTO> cannot be converted to boolean

解决此任务的更正确方法是覆盖Order类中的equalshashCode方法(包括orderIdproductId字段(,并在流上调用distinct()方法。流链将如下所示:

List<Order> uniqueOrders = filteredOrderLines.stream()
.distinct()
.collect(Collectors.toList()); 

事件更正确的解决方案-使用HashSet从初始列表中删除重复项。

最新更新