java8 过滤时多个属性or实现多属性模糊查询
在Java 8中,可以使用Stream API来实现多属性的模糊查询。首先,你需要创建一个过滤条件的谓词(Predicate),然后使用Stream的filter方法来过滤集合中的元素。
假设你有一个Person类,其中有两个属性:name和age。以下是一个示例代码,演示如何实现多属性的模糊查询:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
List<Person> people = new ArrayList<>();
people.add(new Person("John Doe", 25));
people.add(new Person("Jane Smith", 30));
people.add(new Person("Alice Johnson", 35));
String searchTerm = "Jo"; // 模糊查询条件
List<Person> filteredPeople = people.stream()
.filter(person -> person.getName().contains(searchTerm) || String.valueOf(person.getAge()).contains(searchTerm))
.collect(Collectors.toList());
filteredPeople.forEach(person -> System.out.println(person.getName() + " - " + person.getAge()));
}
}
在上面的示例中,我们首先创建了一个包含三个Person对象的List。然后,我们定义了一个searchTerm变量,它表示模糊查询的条件。在过滤时,我们使用了一个谓词表达式,它使用contains方法来检查name和age属性是否包含searchTerm。最后,我们使用collect方法将过滤后的结果收集到一个新的List中,并使用forEach方法打印每个匹配的Person对象的name和age属性。
请注意,上述示例中的过滤条件是使用逻辑或(||)来连接两个条件的。如果你想使用逻辑与(&&)来连接条件,只需将||替换为&&即可
原文地址: http://www.cveoy.top/t/topic/h9GI 著作权归作者所有。请勿转载和采集!