在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属性。

请注意,上述示例中的过滤条件是使用逻辑或(||)来连接两个条件的。如果你想使用逻辑与(&&)来连接条件,只需将||替换为&&即可

java8 过滤时多个属性or实现多属性模糊查询

原文地址: http://www.cveoy.top/t/topic/h9GI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录