列表上的Java分页

列表上的Java分页,java,pagination,Java,Pagination,我正在使用JDK1.8。我必须重新编制查询结果的行号,因为它必须在返回之前通过过滤器。例如,我查询的结果是:(这里的规范是spec) 现在它正在通过过滤器,并准备返回一个列表: List refs = initReferrals.stream().parallel() .filter(ref -> statusFilters.get(STATUS).stream() .anyMatch(status ->

我正在使用JDK1.8。我必须重新编制查询结果的行号,因为它必须在返回之前通过过滤器。例如,我查询的结果是:(这里的规范是spec)

现在它正在通过过滤器,并准备返回一个列表:

List refs = initReferrals.stream().parallel()
                .filter(ref -> statusFilters.get(STATUS).stream()
                        .anyMatch(status -> status.equalsIgnoreCase(ref.getStatusLog().get(0).getState().name())))
                .collect(Collectors.toList());
现在,正在尝试对该列表进行分页,但是,在“numberOfElements”上返回了错误的结果。。 以下是我如何尝试在列表上分页:

Page<ActReferral> resReferrals = new PageImpl<>(refs, pageable, refs.size());
Page resreferels=new PageImpl(refs,pageable,refs.size());
因此,它返回的是整个列表,而不是列表中预期的项目。例如,如果预期页面大小为3,返回的查询结果总数为6。它从后端返回的结果是6


列表分页的正确方式是什么?我必须使用传入的可分页信息并以页面形式返回

您是否能够将页面偏移量/大小发送到存储库查询中?我相信这是最好的,如果你能管理它,因为它不会查询一堆东西,然后抛出它们。正如我提到的,我必须经过过滤后,返回结果。如果我在所有信息都正确的情况下使用可分页信息。但列表上的分页会返回所有内容。不尊重页面中的no-of-element。是否做了您想做的事情?查看后,我认为PageImpl不会自动分割列表。我想你必须通过名单,名单已经缩小到合适的尺寸了。但是,理想情况下,在执行
repository.find()调用时,您应该通过
Pageable
对象传递spring数据。
List refs = initReferrals.stream().parallel()
                .filter(ref -> statusFilters.get(STATUS).stream()
                        .anyMatch(status -> status.equalsIgnoreCase(ref.getStatusLog().get(0).getState().name())))
                .collect(Collectors.toList());
Page<ActReferral> resReferrals = new PageImpl<>(refs, pageable, refs.size());