请问有没有 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); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 PADS Logic 原理图
- ¥15 PADS Logic 图标
- ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
- ¥20 气象站点数据求取中~
- ¥15 如何获取APP内弹出的网址链接
- ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
- ¥50 STM32单片机传感器读取错误
- ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
- ¥15 机器人轨迹规划相关问题
- ¥15 word样式右侧翻页键消失