Jonathan Star 2023-06-29 16:39 采纳率: 76.7%
浏览 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 校园二手交易小程序搭建
  • ¥15 请问在ubuntu用conda创建环境报错怎么能解决
  • ¥15 STM32CubeMX/proteus按键控制指示灯颜色切换
  • ¥20 python,计算区位熵和扩张指数
  • ¥15 Python环境配置
  • ¥15 大四学生的困惑,有偿提问!
  • ¥15 解决页面无法编入索引:被“noindex”标签排除的问题?
  • ¥15 arduino测量电阻
  • ¥15 快手uid转快手号谁能解决 需要开发
  • ¥15 iis部署Django时css不生效,来个真人,ai不好使