list.stream.filter过滤条件为equals时过滤失败
时间: 2023-10-27 13:57:37 浏览: 37
可能是因为使用了错误的方法来比较对象。在Java中,使用equals方法来比较两个对象是否相等,而不是使用"=="运算符。如果过滤条件使用了"=="运算符,那么过滤可能会失败。另外,确保过滤条件的正确性,以及确保List中的元素正确实现了equals方法。可以尝试使用debug模式来查看代码执行过程,以便更好地定位问题。
相关问题
list.stream().filter多条件
引用和展示了如何使用stream和filter方法来实现单条件过滤。可以将多个filter方法链接在一起来实现多条件过滤。例如,使用多个filter方法来过滤性别为1和城市为北京市的用户可以这样写:
list.stream().filter(s->s.getGender().equals("1")).filter(s->s.getCity().equals("北京市")).collect(Collectors.toList());
引用展示了如何同时过滤两个列表中的元素。你可以使用两个filter方法来分别过滤每个列表中的元素,并将两个列表合并在一起。例如,过滤在list1和list2中城市和姓名都相同的用户可以这样写:
list1.stream().filter(user1 -> list2.stream().map(user2 -> user2.getCity() + "&" + user2.getName()).collect(Collectors.toList()).contains(user1.getCity() + "&" + user1.getName())).collect(Collectors.toList());
CompareList.stream().filter
CompareList.stream().filter方法是用于在一个列表中过滤出符合某些条件的元素。根据提供的引用内容,有两种使用方式可以实现这个功能。
1. 使用Lambda表达式过滤条件[^1]:
```java
List<User> filteredList = CompareList.stream()
.filter(a -> !a.getJobNumber().equals("201901"))
.collect(Collectors.toList());
```
这个例子中,我们使用Lambda表达式`a -> !a.getJobNumber().equals("201901")`作为过滤条件,过滤掉了`jobNumber`不等于"201901"的元素,并将过滤后的结果收集到一个新的列表中。
2. 使用方法引用过滤条件:
```java
List<Date> filteredList = CompareList.stream()
.map(User::getEntryDate)
.filter(Objects::nonNull)
.collect(Collectors.toList());
```
这个例子中,我们使用方法引用`User::getEntryDate`将`CompareList`中的每个元素映射为`entryDate`属性的值,然后使用`filter`方法过滤掉`entryDate`为`null`的元素,并将过滤后的结果收集到一个新的列表中。