.stream().filter 多个字段相等
时间: 2023-11-01 12:58:11 浏览: 78
多个字段相等的话,可以使用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())将过滤后的结果收集到一个新的列表中。
相关问题
java stream 两个list对象 匹配字段是否相等
可以使用Java8的Stream API,将两个List对象转换为流,然后使用filter和anyMatch方法进行匹配。示例代码如下:
```
List<ObjectA> listA = ... ;
List<ObjectB> listB = ... ;
boolean isMatched = listA.stream()
.filter(a -> listB.stream()
.anyMatch(b -> a.getField().equals(b.getField())))
.findFirst()
.isPresent();
```
其中,ObjectA和ObjectB分别代表两个对象,getField()方法表示需要比较的字段。如果isMatched为true,则表示两个List对象有相同的字段。
dictDataDTOS.stream().filter(x -> key.equals(x.getDictLabel())).collect(Collectors.toList())的详细解释
这是一个Java8的流式操作,对一个类型为`List<DictDataDTO>`的列表进行了过滤操作。过滤条件是`x -> key.equals(x.getDictLabel())`,也就是匹配`DictDataDTO`对象中`dictLabel`字段与给定的`key`是否相等。如果相等,则将该对象收集到一个新的列表中,并返回结果。如果没有匹配到任何对象,则返回空列表。
阅读全文