java内存分页工具类

来源:互联网 发布:淘宝提前收款 编辑:程序博客网 时间:2024/06/06 06:35

工作中由于有时候项目中特殊业务需求,需要使用到内存分页,本人根据java.util.Arrays、java.util.Collections工具类结合泛型标记写了一个简单的内存分页工具类,支持数组和List,传入全量数据和页码直接返回对应页码的数据,返回数据类型根据传入原数据类型自动转换,可自己进行封装进行上下翻页,加入缓存等操作:

public class RAMPageUtil {    /**     * 根据传入的数组和页码返回分页后的数组     * @param original 全量数据的数组     * @param pageNum 页码     * @param <T>     * @return 返回分页后的对应页码页面的数据     */    public static <T> T[] page(T[] original, int pageNum) {        return page(original,pageNum,Constants.PAGE_SIZE);    }    /**     * 根据传入的数组和页码返回分页后的数组     * @param original 全量数据的数组     * @param pageNum 页码     * @param <T>     * @return 返回分页后的对应页码页面的数据     */    public static <T> T[] page(T[] original, String pageNum) {        if(StringUtil.isEmpty(pageNum) && !Pattern.compile("\\d+").matcher(pageNum).matches()) pageNum = "1";        return page(original,Integer.parseInt(pageNum));    }    /**     * 根据传入的数组和页码返回分页后的数组     * @param original 全量数据的数组     * @param pageNum 页码     * @param pageSize 每页数据条数     * @param <T>     * @return 返回分页后的对应页码页面的数据     */    public static <T> T[] page(T[] original, int pageNum, int pageSize) {        if(null==original || original.length == 0) return (T[]) Array.newInstance(original.getClass().getComponentType(), 0);        if (pageNum <= 0) pageNum = 1;        int from = (pageNum - 1) * pageSize;        int to = pageNum * pageSize;        if(to > original.length) to = original.length;        if(from>=original.length || to <= from) return (T[]) Array.newInstance(original.getClass().getComponentType(), 0);        return Arrays.copyOfRange(original, from, to);    }    /**     * 根据传入的List和页码返回分页后的List     * @param original 全量的List数据     * @param pageNum 页码     * @param <T>     * @return 返回分页后的对应页码页面的List     */    public static <T> List<T> page(List<T> original,int pageNum){        return page(original, pageNum, Constants.PAGE_SIZE);    }    /**     * 根据传入的数组和页码返回分页后的数组     * @param original 全量数据的数组     * @param pageNum 页码     * @param <T>     * @return 返回分页后的对应页码页面的数据     */    public static <T> List<T> page(List<T> original, String pageNum) {        if(StringUtil.isEmpty(pageNum) && !Pattern.compile("\\d+").matcher(pageNum).matches()) pageNum = "1";        return page(original,Integer.parseInt(pageNum));    }    /**     * 根据传入的List和页码返回分页后的List     * @param original 全量的List数据     * @param pageNum 页码     * @param pageSize 每页数据条数     * @param <T>     * @return 返回分页后的对应页码页面的List     */    public static <T> List<T> page(List<T> original,int pageNum,int pageSize){        List list = new ArrayList<T>();        Collections.addAll(list,page(original.toArray(),pageNum,pageSize));        return list;    }}

0 0
原创粉丝点击