Java筛选器无法返回布尔值
我正在尝试制作一个过滤器,用于过滤具有相同2个属性的不同对象 我知道使用distinct还有其他方法,但我希望使用过滤器中的过滤器。我有以下代码:Java筛选器无法返回布尔值,java,filter,java-stream,Java,Filter,Java Stream,我正在尝试制作一个过滤器,用于过滤具有相同2个属性的不同对象 我知道使用distinct还有其他方法,但我希望使用过滤器中的过滤器。我有以下代码: filteredOrderLines.stream().filter(o -> filteredOrderLines.stream().filter(o2 -> o.getOrderId().equals(o2.getOrderId()) && o.getProductId().equals(o2.getProductId
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
lambda表达式中的返回类型错误:流无法转换为布尔值
解决此任务更正确的方法是重写
Order
类中的equals
和hashCode
方法(包括orderId
和productId
字段)并在流中调用distinct()
方法。流链将如下所示:
List<Order> uniqueOrders = filteredOrderLines.stream()
.distinct()
.collect(Collectors.toList());
List uniqueOrders=filteredOrderLines.stream()
.distinct()
.collect(Collectors.toList());
事件更正确的解决方案-使用
HashSet
从初始列表中删除重复项。filteredOrderLines.stream().filter(o->filteredOrderLines.stream())
您在需要筛选的流中传递了集合。消息在某种程度上不是自解释的吗流不能转换为布尔值
?