--- title: Java内存分页工具 date: 2018-08-17 16:55:30 description: Java内存分页工具,参数匹配Spring Data的Pageable接口,可以按需求灵活修改 categories: [技术总结] tags: [Java, Spring boot, Spring Data JPA] --- 代码如下: ```java import org.springframework.data.domain.Pageable; import java.util.ArrayList; import java.util.List; /** * 内存分页工具 * @author chenb */ public class RamPager { private static final int DEFAULT_PAGE_SIZE = 20; private List data; private Pageable pageable; public RamPager(List data, Pageable pageable) { this.data = data; this.pageable = pageable; } public List page() { if (data == null || data.isEmpty()) { return new ArrayList<>(); } int pageNum = pageable == null ? 1 : pageable.getPageNumber() + 1; int pageSize = pageable == null ? DEFAULT_PAGE_SIZE : pageable.getPageSize(); if (pageNum < 0) { pageNum = 1; } int from = (pageNum - 1) * pageSize; int to = pageNum * pageSize; if (to > data.size()) { to = data.size(); } if (from >= data.size() || to <= from) { return new ArrayList<>(); } return data.subList(from, to); } } ``` > - 各类特殊情况都返回空的List > - pageable接口页码从0开始(与Spring Data JPA相匹配) > - 默认pageSize为20