Java List模糊查询并分页

缓存数据模糊查询与分页实现
本文介绍了一种从缓存中进行模糊查询并实现分页展示的方法。通过正则表达式对关键词进行匹配,对缓存中的数据进行过滤,并结合前端传来的分页参数,实现了高效的数据查询与展示。
String keyword = request.getParameter("keyword"); //前端传进list模糊查询字段
int page = Integer.parseInt((StringUtils.isBlank(request.getParameter("page"))) ? "1" : request.getParameter("page")); //分页条件1
int pageSize = Integer.parseInt((StringUtils.isBlank(request.getParameter("pageSize"))) ? "10" : request.getParameter("pageSize"));//分页条件2
QueryResult queryResult = new QueryResult();//返回前端结果(自己封装)
List<WarningInfoBean> infoList = SingletonCacheUtil.getInstance().getAlertCacheInfoList(); //从缓存拿数据
if (null != infoList && infoList.size() > 0) {
    logger.info("缓存数据大小: "+infoList.size());
    List<WarningInfoBean> list = new ArrayList<>();
    for (WarningInfoBean info : infoList) {
        if (StringUtils.isNotBlank(keyword)) {
            Pattern pattern = Pattern.compile(keyword); // 模糊区分大小
            //Pattern pattern = Pattern.compile(name,Pattern.CASE_INSENSITIVE); //模糊不区分大小
            Matcher matcher = pattern.matcher(info.getAlertName()); // 模糊比对条件1
            Matcher matcher1 = pattern.matcher(info.getCompanyName());// 模糊比对条件2
            if (matcher.find() || matcher1.find()) { // 模糊查询  // matcher.matches()精确查询
                list.add(info);
            }
        } else {
            list.add(info);
        }
    }
    if (list.size() > 0) {
        // 处理分页
        int size = list.size();
        // 分页计算
        int pageStart = page == 1 ? 0 : (page - 1) * pageSize;
        int pageEnd = size < page * pageSize ? size : page * pageSize;
        if (size > pageStart) {
            list = list.subList(pageStart, pageEnd);
        }
        queryResult.setRows(list);
        queryResult.setTotal(size);
    }
}else {
    logger.info("缓存数据为空!");
}
write(queryResult);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值