请问有没有 java list 进行 filter orderby 字段模糊匹配 字段大于小于 大于等于 分页 之类的 一个通用的方法
1条回答 默认 最新
关注 看下如有帮助给个采纳谢谢
import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; public class ListUtils { public static <T> List<T> filterAndSort(List<T> list, String keyword, String orderBy, boolean isAsc, int pageNumber, int pageSize) { List<T> filteredList = list.stream() .filter(item -> item.toString().contains(keyword)) // 模糊匹配 .filter(item -> isGreaterOrEqual(item, keyword)) // 大于等于 .filter(item -> isLessOrEqual(item, keyword)) // 小于等于 .collect(Collectors.toList()); Comparator<T> comparator = Comparator.comparing(Object::toString); if (orderBy.equals("desc")) { comparator = comparator.reversed(); // 倒序排序 } filteredList.sort(isAsc ? comparator : comparator.reversed()); int totalItems = filteredList.size(); int fromIndex = (pageNumber - 1) * pageSize; int toIndex = Math.min(fromIndex + pageSize, totalItems); return filteredList.subList(fromIndex, toIndex); } private static boolean isGreaterOrEqual(Object item, String keyword) { // 根据需要自定义判断逻辑 return true; } private static boolean isLessOrEqual(Object item, String keyword) { // 根据需要自定义判断逻辑 return true; } public static void main(String[] args) { // 测试 List<String> list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("pear"); list.add("orange"); list.add("kiwi"); list.add("grape"); List<String> filteredList = filterAndSort(list, "a", "asc", true, 1, 2); System.out.println(filteredList); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
- ¥15 DS18B20内部ADC模数转换器
- ¥15 做个有关计算的小程序
- ¥15 MPI读取tif文件无法正常给各进程分配路径
- ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
- ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
- ¥15 setInterval 页面闪烁,怎么解决
- ¥15 如何让企业微信机器人实现消息汇总整合
- ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
- ¥15 如何用Python爬取各高校教师公开的教育和工作经历