【问题标题】:Transform a List into a Page and sort it asc/desc将 List 转换为 Page 并按 asc/desc 排序
【发布时间】:2020-12-23 08:46:52
【问题描述】:

大家好,正如标题所示,我应该先将 List 变成 Page,然后按 List 中的某个项目对该页面进行排序,我该怎么办? “id”将是extendedResult 列表的元素,在我的新页面中按asc 或desc 排序。我在下面写代码:

Pageable pageable = PageRequest.of(page, pageSize, Sort.by("id").descending());
Page<ExtendedUserObject> extendedPageResult = new PageImpl<ExtendedUserObject> (extendedResult.subList(page, pageSize), pageable, extendedResult.size());
extendedUserObjectAndCount.setExtendedUserObjects(extendedPageResult);

【问题讨论】:

    标签: java spring-boot


    【解决方案1】:

    假设 'id' 是 Integer 类型,而 ExtendedUserObject 有 'getId' 方法。

    int start = page * pageSize;
    boolean asc = ...
    List<ExtendedUserObject> pagedList = extendedResult.stream()
                    .sorted(object -> {
                       if(asc){
                          return Comparator.comparingInt(ExtendedUserObject::getId)
                       }
                       Comparator.comparingInt(ExtendedUserObject::getId).reversed()
                    })
                    .skip(start)
                    .limit(pageSize)
                    .collect(Collectors.toList());
    

    【讨论】:

    • 是的,你的假设是正确的,你写给我的代码应该代替我的吗?
    • 好的,上面的代码只按asc.desc排序应该加一些代码。
    猜你喜欢
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多