JAVA LIST 簡單分頁 整合EXT4 grid表頭動態返回
阿新 • • 發佈:2019-01-02
用於小資料量簡單分頁 package com.utill.tools; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * JAVA 分頁 * @author long */ public class PageTools{ private static int pageRecorders = 15;// 每頁15條資料 /** * @param list * @param page 第幾頁 * @param rows 每頁15條資料 * @return */ public static Map<String,Object> getPageList(List<Map<String,Object>> list,String dimensionType,String title,int page,int rows){ page=getPage(page-1,list.size(),rows); List<Object> result_list = splitList(list,page,rows); Map<String,Object> map =new HashMap<String,Object>(); try { if(result_list!=null&&result_list.size()>0){ List<Map<String, Object>> result = (List<Map<String, Object>>) result_list.get(0); Map<String, Object> header = new HashMap<String, Object>(); List<Map<String, String>> header_list = new ArrayList<Map<String, String>>(); String[] str = title.replaceAll("\\[", "").replaceAll("]", "").split(","); Map<String, String> bName = new HashMap<String, String>(); bName.put("name", dimensionType); bName.put("type", "string"); header_list.add(bName); for (int i = 0; i < str.length; i++) { Map<String, String> hName = new HashMap<String, String>(); hName.put("name", str[i]); hName.put("type", "string"); header_list.add(hName); } header.put("fields", header_list); header.put("root", "rows"); header.put("successProperty", "success"); header.put("totalProperty", "total"); map.put("metaData", header); map.put("success", "true"); map.put("total", list.size()); map.put("rows", result); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } return map; } /** * list & page 1 * @param 預設15條記錄分頁 * @return */ public static Map<String,Object> getPageList(List<Map<String,Object>> list,String dimensionType,String title,int page){ return getPageList(list,dimensionType,title,page,pageRecorders); } /** * 獲取正常的頁碼 */ public static int getPage(int page,int total,int rows){ if(page<0){ page=1; }else if(page>(total/rows)){ page=(total/rows); } return page; } /** * 獲取分頁後的List * @param list * @param page 第幾頁 * @param pageSize 每頁15條 * @return 0-14,15-29,30-31 */ public static List<Object> splitList(List<Map<String,Object>> list,int page,int pageRecorders) { List<Object> listArray = new ArrayList<Object>(list.size() / pageRecorders + 1); for (int i = page*pageRecorders, next, max = list.size(); i < max; i = next) { next = i + pageRecorders; if (next > max) next = max; listArray.add(list.subList(i, next)); } return listArray; } /** * main * @param args */ public static void main(String[] args) { List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); for(int i=0;i<32;i++){ Map<String,Object> map = new HashMap<String,Object>(); map.put("name","張三"+i); map.put("age",i); list.add(map); } Map<String,Object> result=getPageList(list,"day","name",1); List<Map<String,Object>> ll =(List<Map<String,Object>>)result.get("rows"); for(int i=0;i<ll.size();i++){ System.out.println(ll.get(i)); } } }