Jonathan Star 2023-06-29 16:39 采纳率: 74.5%
浏览 16
已结题

请问有没有 java list 进行 filter orderby 字段模糊匹配 字段大于小于 大于等于 分页 之类的 一个通用的方法

请问有没有 java list 进行 filter orderby 字段模糊匹配 字段大于小于 大于等于 分页 之类的 一个通用的方法

  • 写回答

1条回答 默认 最新

  • 全栈若城 全栈领域优质创作者 2023-06-29 16:42
    关注

    看下如有帮助给个采纳谢谢

    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);  
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月7日
  • 已采纳回答 6月29日
  • 创建了问题 6月29日

悬赏问题

  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历