.stream().filter()查询两个条件
时间: 2023-11-15 15:00:09 浏览: 47
在Java8中,可以使用.stream().filter()方法来查询符合两个条件的元素。例如,如果我们有一个对象列表,我们可以使用以下代码来查询名字为"hanmeimei"并且年龄大于20岁的对象:
```
List<Object> resultList = objectList.stream()
.filter(a -> "hanmeimei".equals(a.getUserName()) && a.getAge() > 20)
.collect(Collectors.toList());
```
这将返回一个包含符合条件的对象的列表。注意,使用&&运算符来连接两个条件。
相关问题
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());
.stream().filter 多个字段相等
多个字段相等的话,可以使用stream().filter()方法来实现。你可以使用lambda表达式来定义过滤条件,通过多个字段同时判断是否相等。
例如,假设你有一个包含多个对象的列表,每个对象都有两个字段name和age,你想要筛选出name字段为"John"且age字段为25的对象,你可以使用以下代码:
List<Person> persons = new ArrayList<>();
// 添加对象到列表中
persons.add(new Person("John", 25));
persons.add(new Person("Alice", 30));
persons.add(new Person("John", 20));
// 使用stream().filter()方法进行筛选
List<Person> filteredPersons = persons.stream()
.filter(person -> person.getName().equals("John") && person.getAge() == 25)
.collect(Collectors.toList());
在上面的例子中,我们使用stream().filter()方法传入一个lambda表达式作为过滤条件,判断name字段是否为"John"且age字段是否为25。最后使用collect(Collectors.toList())将过滤后的结果收集到一个新的列表中。