文档说明:
由于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
|
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
|
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); } }
|
对比自己的差距,学习仍需努力!
近期评论