`

Java List 分页的应用

 
阅读更多

1. PagerUtil

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Vector;

public class PagerUtil {
	private int pageSize = 10;// 每页大小
	   
    private int nextPage;// 下一页
   
    private int prePage;// 前一页
   
    private int pageCount;// 总页数
   
    private int currentPage;// 当前页
   
    private int listSize = 0;// 记录总数
   
    private ArrayList alist = new ArrayList();
   
    private String url;

   
    /** *//**
     * 初始化记录列表
     * @param it Iterator
     * @return ArrayList
     */
    public ArrayList getAlist(Iterator it) {
        ArrayList al = new ArrayList();
        while (it.hasNext()) {
            al.add(it.next());
        }
        return al;
    }

    /** *//**
     * 构造方法
     * @param list Collection
     */
    public PagerUtil(Collection list) {
        alist = this.getAlist(list.iterator());
        listSize = alist.size();
        nextPage = 1;
        prePage = 0;
        pageCount = listSize / pageSize + 1;
        currentPage = 1;
    }

    /** *//**
     * 构造方法
     * @param list Collection
     * @param pageSize int
     */
    public PagerUtil(Collection list, int pageSize) {
        alist = (ArrayList) list;
        this.pageSize = pageSize;
        listSize = alist.size();
        nextPage = 1;
        prePage = 0;
        pageCount = listSize / pageSize;
        if (listSize % pageSize > 0) {
            pageCount = pageCount + 1;
        }
        currentPage = 1;
    }

    public PagerUtil(Vector v, int pageSize) {
        for (int i = 0; i < v.size(); i++) {
            alist.add(v.get(i));
        }
        this.pageSize = pageSize;
        listSize = alist.size();
        nextPage = 1;
        prePage = 0;
        pageCount = listSize / pageSize;
        if (listSize % pageSize > 0) {
            pageCount = pageCount + 1;
        }
        currentPage = 1;
    }

    /** *//**
     * 下一页
     * @return ArrayList
     */
    public int nextPage() {
        int tempInt = 1;
        if (currentPage < this.getPageCount() && currentPage >= 1) {
            tempInt = currentPage + 1;
        } else
            tempInt = 1;
        return tempInt;
    }

    /** *//**
     * 前一页
     * @return ArrayList
     */
    public int prePage() {
        int tempInt = 1;

        if (currentPage > 1) {
            tempInt = currentPage - 1;
        } else
            tempInt = this.getPageCount();
        return tempInt;
    }

    /** *//**
     * 第一页
     * @return ArrayList
     */
    public int firstPage() {
        nextPage = 1;
        prePage = this.getPageCount();
        currentPage = nextPage;
        return currentPage;
    }

    /** *//**
     * 最后一页
     * @return ArrayList
     */
    public int endPage() {
        nextPage = this.getPageCount();
        prePage = nextPage - 1;
        currentPage = nextPage;
        return currentPage;
    }

    /** *//**
     * 根据当前页得到记录列表
     * @param currentPage int
     * @return ArrayList
     */
    public ArrayList getPageList() {
        ArrayList tempList = new ArrayList();
        for (int i = (currentPage - 1) * pageSize; i < (currentPage - 1)
                * pageSize + pageSize; i++) {
            if (i >= 0 && i < this.alist.size()) {
                tempList.add(alist.get(i));
            } else
                break;
        }
        return tempList;
    }

    public String getPageCtrlString() {
        String strCtrl = "";
        if (this.currentPage == 1) {
            //strCtrl = "首页 ";
        } else {
            strCtrl = "<a href='" + url + "&page=1'>首页</a> ";
        }
        if (this.currentPage == 1) {
            //strCtrl = strCtrl + "上一页 ";
        } else {
            strCtrl = strCtrl + "<a href='" + url + "&page=" + this.prePage() + "'>上页</a> ";
        }
        
        for (int i = 1; i <= this.pageCount; i++) {
       	 	strCtrl = strCtrl + "<a href='" + url + "&page=" + i + "'>[" + i + "]</a> ";
		}
        
        if (this.currentPage == this.pageCount) {
            //strCtrl = strCtrl + "下一页 ";
        } else {
            strCtrl = strCtrl + "<a href='" + url + "&page=" + this.nextPage() + "'>下页</a> ";
        }
        if (this.currentPage == this.pageCount) {
            //strCtrl = strCtrl + "末页 ";
        } else {
            strCtrl = strCtrl + "<a href='" + url + "&page=" + this.getPageCount() + "'>末页</a> ";
        }
//        strCtrl = strCtrl + "\n\r";        //换行
//        strCtrl = strCtrl
//                + "跳到 <select name='toPage' onChange=\"window.location='" + url
//                + "?page='+this.options[this.selectedIndex].value;\">";
        /*
        if (this.currentPage == 1) {
            strCtrl = "首页 ";
        } else {
            strCtrl = "<a href='" + url + "?page=1'>首页</a> ";
        }
        if (this.currentPage == 1) {
            strCtrl = strCtrl + "上一页 ";
        } else {
            strCtrl = strCtrl + "<a href='" + url + "?page=" + this.prePage() + "'>上页</a> ";
        }
        
        if(this.getPageCount() <= 1) {
           
        } else if(this.getPageCount() <= 5) {
            for (int i = 1; i <= this.getCurrentPage(); i++) {
                if (i == this.getCurrentPage()) {
                    strCtrl = strCtrl + "<b>" + i + "</b> ";
                } else {
                    strCtrl = strCtrl + "<a href='" + url + i + "'>" + i + "</a> ";
                }
            }
        } else if(4 < this.getCurrentPage() && this.getCurrentPage() < (this.getPageCount() - 3)) {
            for (int i = this.getCurrentPage() - 3; i <= this.getCurrentPage() + 3; i++) {
                if (i == this.getCurrentPage()) {
                    strCtrl = strCtrl + "<b>" + i + "</b> ";
                } else {
                    strCtrl = strCtrl + "<a href='" + url + i + "'>" + i + "</a> ";
                }
            }
        } else if(this.getCurrentPage() <= 4) {
            for (int i = 1; i <= 5; i++) {
                if (i == this.getCurrentPage()) {
                    strCtrl = strCtrl + "<b>" + i + "</b> ";
                } else {
                    strCtrl = strCtrl + "<a href='" + url + i + "'>" + i + "</a> ";
                }
            }
        } else if((this.getPageCount() - 6) <= this.getCurrentPage()) {
            for (int i = this.getPageCount() - 6; i <= this.getPageCount(); i++) {
                if (i == this.getCurrentPage()) {
                    strCtrl = strCtrl + "<b>" + i + "</b> ";
                } else {
                    strCtrl = strCtrl + "<a href='" + url + i + "'>" + i + "</a> ";
                }
            }
        } else {
            for (int i = this.getCurrentPage() - 3; i <= this.getCurrentPage() + 3; i++) {
                if (i == this.getCurrentPage()) {
                    strCtrl = strCtrl + "<b>" + i + "</b> ";
                } else {
                    strCtrl = strCtrl + "<a href='" + url + i + "'>" + i + "</a> ";
                }
            }
        }
        
        if (this.currentPage == this.pageCount) {
            //strCtrl = strCtrl + "下一页 ";
        } else {
            strCtrl = strCtrl + "<a href='" + url + "?page=" + this.nextPage() + "'>下页</a> ";
        }
        if (this.currentPage == this.pageCount) {
            //strCtrl = strCtrl + "末页 ";
        } else {
            strCtrl = strCtrl + "<a href='" + url + "?page=" + this.getPageCount() + "'>末页</a> ";
        }
       	  strCtrl = strCtrl + "\n\r";        //换行
        */

//        strCtrl = strCtrl + "当前" + this.getCurrentPage() + "/" + this.getPageCount() + "页 每页"
//            + this.getPageSize() + "条 共" + this.listSize + "条";

        return strCtrl;
    }
   
    public int getCurrentPage() {
        return currentPage;
    }

    public int getNextPage() {
        return nextPage;
    }

    public int getPageCount() {
        return pageCount;
    }

    public int getPageSize() {
        return pageSize;
    }

    public int getPrePage() {
        return prePage;
    }

    public String getUrl() {
        return url;
    }

    public void setPrePage(int prePage) {
        this.prePage = prePage;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }

    public void setNextPage(int nextPage) {
        this.nextPage = nextPage;
    }

    public void setCurrentPage(int currentPage) {
        if (currentPage > this.getPageCount()) {
            this.currentPage = this.getPageCount();
        } else if (currentPage < 0) {
            this.currentPage = 1;
        } else {
            this.currentPage = currentPage;
        }
    }

    public void setUrl(String url) {
        this.url = url;
    }
    
}

 2. 测试类

import java.util.ArrayList;

public class TestPagrUtil {
    public static void main(String args[]) {
        ArrayList al = new ArrayList();
        al.add("a");
        al.add("b");
        al.add("c");
        al.add("d");
        al.add("e");
        al.add("f");
        al.add("g");
        al.add("h");
        al.add("i");
        al.add("j");
        al.add("k");
        al.add("l");
        al.add("m");
        al.add("n");

        PagerUtil autopage = new PagerUtil(al,1);
        autopage.setCurrentPage(5);
        autopage.setUrl("/page/user/account/isprize.jsp");
        ArrayList currentPageList = autopage.getPageList();       
        String ctrlStr = autopage.getPageCtrlString();
       
        for(Object o: currentPageList) {
            System.out.println(o.toString());
        }
        System.out.println(ctrlStr);
    }
}
 
分享到:
评论

相关推荐

    Java Web应用开发:分页.docx

    1.7 分页 1 目标 分页展示商品,用户使用“上一页“,”下一页“超链查看上一页和下一页的商品效果如下: 特价商品的分页效果 特价商品的分页效果 搜索“男 搜索“男”的分页效果 2 分页原理 2.1 每页展示部分商品的...

    JAVA上百实例源码以及开源项目

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    JAVA上百实例源码以及开源项目源代码

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    java开源包11

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包6

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包4

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包9

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包101

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包5

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包8

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包10

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包3

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包1

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java面试宝典

    java面试试题 全面 准确 带答案 coreJava部分 8 1、面向对象的特征有哪些方面? 8 2、作用域public,private,protected,以及不写时的区别? 8 3、String 是最基本的数据类型吗? 8 4、float 型float f=3.4是否正确? 8 ...

    通用分页组件

    内部提供了源代码实现,以及DEMO应用,实现分页非常简单; 需要做的工作有三个地方 1.继承实现分页的抽象类AbstractPage 的两个抽象方法; 2.调用WebPageUtils.doAction方法传入参数即可 3.直接获取...

    java jdk实列宝典 光盘源代码

    15 applet java可以编写两类程序,applications和applet,applications可以在控制台直接运行,与其他高级编程语言没有太大区别,而java的特色在于它具有编制小应用程序的功能,applet可以在internet上传输并在兼容...

    java开源包2

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包7

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    JSF2.xdatatable分页控件与左侧菜单最简单应用

    JSF2.xdatatable分页控件与左侧菜单最简单应用  JSF2.x,功能强大,使用方便。全世界使用JSF的人越来越多。而且也有很多很好的控件给发出来了,如:richfaces、primefaces、myfaces等,就日前来讲primefaces功能...

    Java资源包01

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

Global site tag (gtag.js) - Google Analytics