通过流式集合接口对list集合进行模糊查询和筛选

一.通过Matcher中的find()方法对list集合进行模糊查询操作

1.创建实体对象:

public class User {

    private Integer id;
    private String name;
    private String password;
    
    public User() {
    }
    public User(Integer id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

}

2.创建数据以及对数据进行模糊查询操作

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 *  对List集合中的数据 name, password 进行模糊查询
 */
public class TestList {
    public static void main(String[] args) {
        List<User> users = Collections.synchronizedList(new ArrayList<User>());
        User u1 = new User(1, "李国辉", "1");
        User u2 = new User(2, "小辉", "22");
        User u3 = new User(3, "李国辉", "33");
        User u4 = new User(4, "哈喽", "42");
        User u5 = new User(5, "哈哈", "25");
        users.add(u1);
        users.add(u2);
        users.add(u3);
        users.add(u4);
        users.add(u5);
        System.out.println("源数据...");
        users.forEach(System.out::println);

        System.out.println();
        System.out.println("对list集合进行模糊查询操作...");

        /**
         *  传入模糊查询的参数
         */
        Pattern pattern = Pattern.compile("小辉");
        Pattern pattern1 = Pattern.compile("2");

        List list = new ArrayList();
        for(int i=0;i<users.size();i++){
            Matcher matcher = pattern.matcher(users.get(i).getName());
            Matcher matcher1 = pattern1.matcher(users.get(i).getPassword());
            //调用模糊查询方法
            if(matcher.find() || matcher1.find()){
                list.add(users.get(i));
            }
        }
        list.forEach(System.out::println);

    }
}

3.运行结果:
在这里插入图片描述

二.通过Matcher中的matches()方法对list集合进行匹配筛选操作

1.使用上面之前的源数据进行测试

public class TestList {
    public static void main(String[] args) {
        List<User> users = Collections.synchronizedList(new ArrayList<User>());
        User u1 = new User(1, "李国辉", "1");
        User u2 = new User(2, "小辉", "22");
        User u3 = new User(3, "李国辉", "33");
        User u4 = new User(4, "哈喽", "42");
        User u5 = new User(5, "哈哈", "25");
        users.add(u1);
        users.add(u2);
        users.add(u3);
        users.add(u4);
        users.add(u5);
        System.out.println("源数据...");
        users.forEach(System.out::println);
        System.out.println();

        System.out.println("匹配筛选...");
        Pattern pattern1 = Pattern.compile("李国辉");
        Pattern pattern2 = Pattern.compile("5");
        List list = new ArrayList();
        for(int i=0;i<users.size();i++){
            Matcher matcher1 = pattern1.matcher(users.get(i).getName());
            Matcher matcher2 = pattern2.matcher(users.get(i).getId().toString());
            if(matcher1.matches() || matcher2.matches()){
                list.add(users.get(i));
            }
        }
        list.forEach(System.out::println); 
    }
}

2.测试结果:
在这里插入图片描述

以上是对Matcher中的两个方法的运用,在项目开发中很重要…

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值