主题切换
🔍 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条
⚠️ 注意事项
类型匹配
- 参数值和字段类型必须严格匹配
- 注意日期、数字等特殊类型的处理
性能考虑
- 大数据量时注意性能影响
- 合理使用索引和缓存
- 避免过多的链式操作
空值处理
- 注意处理null值情况
- 建议增加数据验证