Skip to content

🔍 List数据筛选工具(CollectionFilter)

📖 功能介绍

TIP

CollectionFilter 是一个强大的List数据筛选工具,提供链式调用、多条件筛选、排序和分页等功能,可以显著简化代码编写,提升开发效率。

🛠️ API说明

1. 比较操作

方法说明示例
eq等于filter.eq(User::getName, "张三")
ne不等于filter.ne(User::getAge, 18)
gt大于filter.gt(User::getScore, 60)
gte大于等于filter.gte(User::getPrice, 100)
lt小于filter.lt(User::getCount, 50)
lte小于等于filter.lte(User::getAmount, 1000)

2. 范围匹配

方法说明示例
range区间匹配filter.range(User::getAge, 18, 30)
inRange多区间匹配filter.inRange(User::getScore, ranges)
in包含指定值filter.in(User::getType, types)
notIn不包含指定值filter.notIn(User::getStatus, status)

3. 模糊匹配

方法说明示例
like模糊查询filter.like(User::getName, "张")

4. 逻辑运算

方法说明用途
and子查询条件组合多个条件
andPredicate自定义子查询复杂条件处理
or或运算条件分隔符

5. 结果处理

方法说明用途
limit限制结果数量控制返回记录数
sortDesc降序排序按字段降序
sortAsc升序排序按字段升序
sort自定义排序复杂排序逻辑
size获取结果数量统计记录数
toList返回List结果获取筛选后列表
toPage返回分页结果分页数据处理

💡 使用示例

1. 基础筛选

java
List<User> users = new ArrayList<>();
// ... 初始化用户列表

CollectionFilter<User> filter = new CollectionFilter<>(users);
List<User> result = filter
    .like(User::getName, "张")          // 名字包含"张"
    .gt(User::getAge, 18)              // 年龄大于18
    .sortDesc(User::getCreateTime)      // 按创建时间降序
    .limit(10)                         // 限制10条记录
    .toList();                         // 返回结果列表

2. 复杂条件

java
CollectionFilter<SessionVo> filter = new CollectionFilter<>(sessionList);

filter.like(SessionVo::getUserId, "1010")    // 用户ID包含1010
    .and(a -> a                              // AND子查询
        .eq(SessionVo::getUserId, "12")      // 用户ID等于12
        .or()                                // 或者
        .eq(SessionVo::getUserId, "13"))     // 用户ID等于13
    .sortDesc(SessionVo::getUserId)          // 按用户ID降序
    .toList();                               // 返回结果列表

3. 分页查询

java
CollectionFilter<User> filter = new CollectionFilter<>(userList);
PageVo<User> pageResult = filter
    .like(User::getDepartment, "技术部")    // 部门包含"技术部"
    .sortDesc(User::getJoinDate)           // 按入职日期降序
    .toPage(1, 20);                        // 第1页,每页20条

⚠️ 注意事项

  1. 类型匹配

    • 参数值和字段类型必须严格匹配
    • 注意日期、数字等特殊类型的处理
  2. 性能考虑

    • 大数据量时注意性能影响
    • 合理使用索引和缓存
    • 避免过多的链式操作
  3. 空值处理

    • 注意处理null值情况
    • 建议增加数据验证