Loading

Java流处理分页,list排序

   /**
    * Java分页逻辑
    */
   @Test
   public void testJavaPaging() {

      // 这种删除、新增,不会报错
      List<Integer> objList = new ArrayList<>();
      objList.add(123);
      objList.add(123);
      objList.add(123);
      objList.add(123);

      Long page = 4L;
      Long size = 2L;
      // 这种list,新增、删除节点会报错
      // List<Integer> objList = Arrays.asList(1,2,13,4,15,6,17,8,19,20);
      // objList.add(123);
      // List<String> objList = Arrays.asList("1,2,13,4,15,6,17,8,19,20".split(","));

      List<Integer> pagingList7 = captureListByPageAndSizeJava7(objList, page.intValue(), size.intValue());
      List<Integer> pagingList8 = captureListByPageAndSizeJava8(objList, page, size);

      System.out.println("Java7分页[captureListByPageAndSizeJava7]: = " + pagingList7);
      System.out.println("Java8分页[captureListByPageAndSizeJava8]: = " + pagingList8);
   }

   /**
    * Java8-分页:
    *    integers: 1,2,13,4,15,6,17,8,19
    *    第3页,每页2个 =》 跳过 (3-1)*2 个,取2个
    *    改造成 泛型
    * @param list 需要分页的List
    * @param page 页码
    * @param size 每页大小
    * @return
    */
   private static <T> List<T>  captureListByPageAndSizeJava8(List<T> list, Long page, Long size) {
      return list.stream().skip((page - 1) * size).limit(size).collect(Collectors.toList());
      // return list.stream().skip((page-1) * size).limit(size).collect(Collectors.toList());
   }


   /**
    * Java7-分页
    * @param list 需要分页的List
    * @param page 页码
    * @param size 每页大小
    * @return
    */
   private static <T> List<T>  captureListByPageAndSizeJava7(List<T> list, Integer page, Integer size) {
      List<T> result = new ArrayList<>();
      Integer totalCount = page * size;
      Integer startIndex = totalCount - size;
      Integer endIndex = list.size() < totalCount ? list.size() : totalCount;
      if (startIndex > list.size()) {
         return result;
      } else {
         return list.subList(startIndex, endIndex);
      }
   }
    // 排序后的结果集
    // 优先最高排序的放在后面,优先级最低的放在最前面
    List<Model> sortedResultList = resultList.stream()
          .sorted(Comparator.comparing(a -> a.getParam1()))
          .sorted(Comparator.comparing(a -> a.getParam2()))
          .sorted(Comparator.comparing(a -> a.getParam3()))
          .sorted(Comparator.comparing(a -> a.getParam4()))
          .sorted(Comparator.comparing(a -> a.getParam5()))
          .sorted(Comparator.comparing(a -> a.getParam6(), Comparator.reverseOrder()))
          .collect(Collectors.toList());
posted @ 2021-11-08 17:45  mylin95  阅读(549)  评论(0)    收藏  举报