zoukankan      html  css  js  c++  java
  • List集合进行分页

    /**
    * @ClassName: Text2
    * @Description: (集合的分页算法)
    * @author Luhan
    * @date 2017年3月16日 下午17:18:06
    */
    public class Text1 {
    private static List<Integer> date;
    private static Integer PaseSize = 6;//显示多少条
    private static Integer mPageNum = 30;//总条数

    public static void main(String[] args) {
    //传入的是显示第几页
    showList(2);
    }
    /**
    * 显示数据,分页显示list里面的数据
    * @param pageNum 页数
    */
    public static void showList(int pageNum){
    date = new ArrayList<Integer>();
    for (int i = 0; i < mPageNum; i++) {
    date.add(i+1);
    }
    /**这里是决定一页只会显示6条
    *
    * for循环的左边 i等于的值
    * 当是第一页的时候 1 对 0;索引应该从0开始
    * 当是第二页的时候 2 对 6;索引应该从6开始
    * 当是第三页的时候 3 对 12;索引应该从12开始
    * 当是第四页的时候 4 对 18;索引应该从18开始
    * .
    * .
    * .
    * 以此类推
    * 当是第n页的时候索引就应该是从(当前页数-1)*显示条数
    *
    *
    *
    * for循环的右边 i小于的值,这里假设只有20条数据
    * 当是第一页的时候 1 对 0~6;右边的数应该为6
    * 当是第一页的时候 2 对 6~12;右边的数应该为6
    * 当是第一页的时候 3 对 12~18;右边的数应该为6
    * 当是第一页的时候 4 对 18~20;右边的数应该为20,这里为什么会是20而不是24是因为我们只有20条数据,
    * 显然i不能小于24,这样后面21、22、23根本就没有值,所以这应该是20
    * 设 x = (当前页数-1)*显示条数;
    * 最后得出右边的数值应该为:判断x是不是大于数据的总条数,如果大于就显示总条数,如果小于就显示x
    * 所以这里我们可以使用三元运算符来解决就是下方的表达式
    * ((pageNum-1)*PaseSize)+PaseSize > mPageNum ? mPageNum:((pageNum-1)*PaseSize)+PaseSize)
    * 先判断下(当前是第几页-1乘以显示条数)是不是大于总条数,如果大于总条数就返回总条数,如果小于总条数则返回(当前是第几页-1乘以显示条数)
    */
    List<Integer> newDate = new ArrayList<Integer>();
    for (int i = (pageNum-1)*PaseSize; i < (
    ((pageNum-1)*PaseSize)+PaseSize > mPageNum ? mPageNum:((pageNum-1)*PaseSize)+PaseSize); i++) {
    newDate.add(date.get(i));
    }
    System.out.println(">>>>>>>>>>第"+pageNum+"页的数据>>>>>>>>>>>>");
    for (int i = 0; i < newDate.size(); i++) {
    System.out.println(newDate.get(i));
    }
    }
    }

    如果想直接拿来使用的话,就直接复制下面的代码即可

    /**
    * 数据集合的分页方法,根据传入总共的数据跟页码,返回页码所需要显示多少条的数据
    * <BR/>采用泛型的方法,即为,list中为什么类型的数据就返回什么类型的数据
    * @param f 带有需要进行分页的数据集合
    * @param pageNo 第几页
    * @param dataSize 显示多少条数据
    * @return 进过分页之后返回的数据
    */
    public static <F> List<F> datepaging(List<F> f,int pageNo,int dataSize){
    /*
    * 经过测试发现当pageNo为0或者小于时,也就是第0页时,程序会报错,所以需要处理一下pageNo的值
    *
    * 先进行空值的判断,避免程序出现null异常
    *
    * 当pageNo的值小于等于0时,我们让它的值为1
    */
    //参数的校验
    if(f == null){//当传入过来的list集合为null时,先进行实例化
    f = new ArrayList<F>();
    }
    if((Object)pageNo == null){//当传入过来的pageNo为null时,先进行赋值操作
    pageNo = 1;
    }
    if((Object)dataSize == null){//当传入过来的dataSize为null时,先进行赋值操作
    dataSize = 1;
    }
    if(pageNo <= 0){
    pageNo = 1;
    }

    //记录一下数据一共有多少条
    int totalitems = f.size();
    //实例化一个接受分页处理之后的数据
    List<F> afterList = new ArrayList<F>();
    /*
    * 进行分页处理,采用for循环的方式来进行处理
    *
    * 首先for循环中,i应该从哪里开始:i应该从 (当前是第几页 -1 乘以 条数) 开始
    *
    * 然后for循环应该到哪里结束,也就是i应该小于:判断(开始的索引+显示条数)是不是大于总条数,如果大于就是总条数,如果小于就是(开始的索引+显示条数)
    *
    * 然后让i++
    */

    for
    ( int i = (pageNo-1)*dataSize;
    i < (((pageNo -1)*dataSize) + dataSize >
    totalitems ? totalitems:((pageNo -1)*dataSize) +dataSize);
    i++) {
    //然后将数据存入afterList中

    afterList.add(f.get(i));
    }

    //然后将处理后的数据集合进行返回
    return afterList;
    }

  • 相关阅读:
    浅谈LBS(基于位置的服务)
    MapBar地图更新啦
    推荐一款软件:Global Mapper
    51ditu、清华地图以及Google地图
    极索(Gsuo)推出新版地图采用Gmap设计思路
    公告:Rover's Official Blog停止更新
    最后的礼物:校园多媒体系统和校园WEBGIS系统
    JAVA中最常用的十个快捷键
    启程去旅行 android之merge布局 http://www.cnblogs.com/travelfromandroid/articles/2133206.html
    Http 范例
  • 原文地址:https://www.cnblogs.com/luhan/p/6575317.html
Copyright © 2011-2022 走看看