工作记录之关于分页

pg

文档说明:

由于PageHepler只对sql查出来的数据分页有效,于是对于从其他来源的数据例如HBase或者是手动拼接的数据分页无效,于是上网差了一下看了一些其他的来源手动写了一个分页

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

* 手动对List进行分页
* @param list,pageNum,pageSize
* @return
* @author yedan
*/
public static List<Map<String,Object>> startPage(List<Map<String, Object>> list, Integer pageNum, Integer pageSize) {
if (list == null) {
return null;
}
if (list.size() == 0) {
return null;
}
Integer count = list.size(); //记录总数
Integer pageCount = 0; //页数
if (count % pageSize == 0) {
pageCount = count / pageSize;
} else {
pageCount = count / pageSize + 1;
}
int fromIndex = 0; //开始索引
int toIndex = 0; //结束索引
if (pageNum != pageCount) {
fromIndex = (pageNum - 1) * pageSize;
toIndex = fromIndex + pageSize;
} else {
fromIndex = (pageNum - 1) * pageSize;
toIndex = count;
}
List<Map<String, Object>> pageList = new ArrayList<>();
pageList = list.subList(fromIndex, toIndex);
return pageList;
}

写得有点繁琐,并且因为代码的一些坏习惯,经常忘记加泛型之类的,需要以后工作注意,今天公司大佬给我看他自己写的内存分页的代码,觉得自己还有很长的路要走,先做记录

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
40
41
42
43

* @version 1.0
* @description 内存分页工具
*/
public class {

public static <T> List<T> page(List<T> data, BasePageSearchForm basePageSearchForm){
return page(data ,basePageSearchForm.getPageIndex(),basePageSearchForm.getPageSize());
}

public static <T> List<T> page(List<T> data, int pageIndex, int pageSize) {
if(null == data){
return data;
}
return data.stream().skip((pageIndex-1)*pageSize).limit(pageSize).collect(Collectors.toList());
}

public static <K,V> TreeMap<K,V> page(TreeMap<K,V> map, int pageIndex, int pageSize) {
TreeMap<K,V> retMap = new TreeMap<>();
int offset = (pageIndex-1)*pageSize;
int i = 0;
for (Map.Entry<K, V> kvEntry : map.entrySet()) {
if(i>=offset){
retMap.put(kvEntry.getKey(),kvEntry.getValue());
}
if(retMap.size() == pageSize){
break;
}
i++;
}
return retMap;
}

public static void main(String[] args) {
List<String> data = new ArrayList<>();
data.add("aa");
data.add("aa");
data.add("aa1");
data.add("aa2");
data = page(data,2,2);
System.out.println(data);
}
}

对比自己的差距,学习仍需努力!