1. 程式人生 > >JAVA LIST 簡單分頁 整合EXT4 grid表頭動態返回

JAVA LIST 簡單分頁 整合EXT4 grid表頭動態返回

用於小資料量簡單分頁

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));
        }
        
	}

}