我正在尝试制作一个过滤器,用于过滤具有相同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
类中的equals
和hashCode
方法(包括orderId
和productId
字段(,并在流上调用distinct()
方法。流链将如下所示:
List<Order> uniqueOrders = filteredOrderLines.stream()
.distinct()
.collect(Collectors.toList());
事件更正确的解决方案-使用HashSet
从初始列表中删除重复项。