邯郸住房城乡建设厅网站,抖音代运营都做什么,四川省工程建设信息网,WordPress百度智能小程序通过stream实现分页、模糊搜索、按列过滤功能 背景逻辑展示示例代码 背景
在有一些数据通过数据库查询出来后#xff0c;需要经过一定的逻辑处理才进行前端展示#xff0c;这时候需要在程序中进行相应的分页、模糊搜索、按列过滤了。这些功能通过普通的逻辑处理可能较为繁琐… 通过stream实现分页、模糊搜索、按列过滤功能 背景逻辑展示示例代码 背景
在有一些数据通过数据库查询出来后需要经过一定的逻辑处理才进行前端展示这时候需要在程序中进行相应的分页、模糊搜索、按列过滤了。这些功能通过普通的逻辑处理可能较为繁琐但是通过stream流处理会简单很多
逻辑展示
这是一个写好的模板感觉也可以根据这个写成一个通用的处理后面如果再用的就补充一下 代码解释 ①将完成数据处理的list重新构成一个新的list当然里面的数据引用是一样的但是新list可以对其增删改了 ②设置分页的总数前端经常会用到这个值。 ③模糊搜索获取前端传入的模糊搜索值 ④这里可以支持两个字段的模糊搜索使用filter结合||运算得到结果 ⑤按列过滤这里也是通过filter函数其中代码处理如下 按列过滤和模糊搜索类似但是传入的是一个mapkvk为这个字段名v为模糊搜索内容。然后遍历这个map。如果能和filter中的对象值匹配到保留如果都匹配不到则丢弃。最后返回这个list 因为过滤完成后的大小会变所以total重新设置
⑥排序排序也可以做出按列排序的方式使用sorted方法其中的参数需要一个compartor类型自定义sortBy方法生成如下 对其中的字段进行排序分别有string、数值类以及默认排序排序方式desc或者asc等如果要加时间类或者其他类型需要手动实现comparter接口构造比较方式了。
⑦分页分页将传入的当前页和每页显示数目通过skip和limit函数实现较为简单 ⑧结果保存及返回
示例代码
public class Person {private String name;private int age;private String city;// 构造函数、getter和setter方法
}import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;public class PersonStreamExample {public static void main(String[] args) {ListPerson persons getSampleData(); // 获取示例数据// 分页int pageSize 10;int pageNumber 1;ListPerson page persons.stream().skip((pageNumber - 1) * pageSize).limit(pageSize).collect(Collectors.toList());// 按列过滤String filterColumn city;String filterValue New York;ListPerson filtered persons.stream().filter(person - filterColumn.equals(name) person.getName().contains(filterValue)).filter(person - filterColumn.equals(age) person.getAge() Integer.parseInt(filterValue)).filter(person - filterColumn.equals(city) person.getCity().equals(filterValue)).collect(Collectors.toList());// 模糊搜索String keyword John;ListPerson searchResults persons.stream().filter(person - person.getName().contains(keyword) || person.getCity().contains(keyword)).collect(Collectors.toList());// 按列排序String sortColumn age;ListPerson sorted persons.stream().sorted(Comparator.comparingInt(person - {if (sortColumn.equals(name)) {return person.getName().hashCode();} else if (sortColumn.equals(age)) {return person.getAge();} else if (sortColumn.equals(city)) {return person.getCity().hashCode();} else {return 0;}})).collect(Collectors.toList());}// 获取示例数据private static ListPerson getSampleData() {// 创建和返回示例数据的逻辑}
}
后续有使用补充提取为通用方法的内容