代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40import org.springframework.data.domain.Pageable;
import java.util.ArrayList;
import java.util.List;
/**
* 内存分页工具
* @author chenb
*/
public class RamPager<T> {
private static final int DEFAULT_PAGE_SIZE = 20;
private List<T> data;
private Pageable pageable;
public RamPager(List<T> data, Pageable pageable) {
this.data = data;
this.pageable = pageable;
}
public List<T> 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