`

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 数据分页显示

    在Java编程中,数据分页显示是Web应用中常见的需求,尤其在处理大量数据时,为了提高用户体验并优化服务器性能,通常需要将数据分成多个页面进行展示。本篇将深入探讨Java实现数据分页显示的核心技术和策略。 首先...

    关于Java中List对象的分页思想-按10个或者n个数对list进行分组

    List对象的分页思想在实际应用中非常广泛,例如: * 在大规模数据处理时,使用List对象的分页思想可以提高处理效率。 * 在数据分页时,使用List对象的分页思想可以实现分页处理。 * 在批量处理时,使用List对象的...

    java分页组件(直接复用,简单方便)

    Java分页组件是一种在开发Java Web应用程序时非常实用的工具,它可以帮助开发者高效地处理大量数据的展示,尤其是在用户需要浏览或操作大量记录时。在Web应用中,通常不建议一次性加载所有数据到客户端,因为这可能...

    实现对List的分页

    在Java编程中,分页是数据管理中常见的一种需求,特别是在处理大量数据时,为了提高用户体验,我们需要将数据分批加载。本示例主要讲解如何利用List接口的获取子List方法来实现对List的分页功能。这个过程涉及到Java...

    Java List分页功能实现代码实例

    Java List分页功能实现代码实例的应用场景非常广泛,例如: * 在Web开发中,需要将大量数据分页显示在界面上。 * 在移动应用开发中,需要将数据分页显示在移动设备上。 * 在数据分析和科学计算中,需要将大量数据...

    java分页代码完整版

    Java 分页技术是大型Web应用中不可或缺的一部分,它允许用户以较小的数据量逐步浏览大量数据库记录,提升用户体验并减轻服务器压力。本资源提供了一个完整的Java分页代码实现,包括注释,非常适合初学者学习和实践。...

    JAVA数字分页案例

    在Java开发中,分页是Web应用程序中非常常见的一种功能,它主要用于处理大量数据时,提高用户体验,避免一次性加载所有数据导致页面响应慢或者内存压力过大。本案例以"JAVA数字分页案例"为主题,结合SpringMVC和...

    list 假分页的demo

    在Java或其他支持list的数据结构的编程语言中,假分页可以通过以下步骤实现: - 首先,将整个数据集加载到一个list对象中。 - 然后,根据每页显示的条目数和当前页码计算出起始和结束索引。 - 最后,从list中...

    java js 分页控件

    Java 和 JavaScript 分页控件是Web开发中常用的技术,用于在大量数据中实现高效的数据浏览。在网页应用中,分页通常用于展示数据库查询结果,避免一次性加载所有数据导致页面响应速度变慢或消耗过多资源。本文将深入...

    java一个通用的分页方法

    ### Java通用分页方法解析与应用 在Java开发中,特别是在Web应用中,分页功能是数据展示中不可或缺的一部分。合理的分页不仅能够提升用户体验,还能优化服务器性能,避免一次性加载大量数据导致的延迟和资源消耗。...

    java多线程分页查询

    ### Java多线程分页查询知识点详解 #### 一、背景与需求分析 在实际的软件开发过程中,尤其是在处理大量数据时,如何高效地进行数据查询成为了一个关键问题。例如,在一个用户众多的社交平台上,当用户需要查看...

    用java 实现分页

    以上就是使用Java实现分页的基本步骤,通过理解这些核心概念和技巧,你可以灵活地在自己的项目中应用分页功能。在实际开发中,还可以考虑引入成熟的分页库,如MyBatis的PageHelper,简化分页代码并提供更丰富的分页...

    java后台分页.docx

    Java 后台分页是Web应用开发中一个常见的需求,特别是在大数据量的场景下,为了提高用户体验和系统性能,分页技术显得尤为重要。本篇将详细介绍如何在Java中实现后台分页,包括SQL语句的分页、Hibernate的分页以及...

    java自定义分页标签实现带条件的分页查询

    在Java开发中,分页查询是一项常见的需求,尤其是在构建大型Web应用时,为了提高用户体验,通常需要对大量的数据进行分页展示。本话题主要探讨如何使用自定义的Java分页标签来实现带条件的分页查询,这将帮助开发者...

    MySQL_数据库实现的JAVA_分页实例

    本实例展示了如何在Java后端利用MySQL数据库实现分页查询,并将其集成到Web应用中。理解并掌握这些知识点,能帮助开发者有效地处理大量数据,提升应用程序的性能和用户体验。同时,需要注意不断优化查询策略,以...

    JAVA_JDBC面向对象分页(初步设计二之oracle)

    在处理大量数据时,分页查询是一种有效的策略,可以提高应用程序的性能,避免一次性加载过多数据导致内存压力。Oracle数据库作为一款广泛使用的商业数据库系统,经常在企业级应用中被采用。本篇文章将重点讨论如何...

    java的分页代码

    Java中的分页功能是数据库操作中非常常见的一种技术,它允许我们从大量数据中按需获取部分信息,提高用户体验并减少服务器压力。本示例将详细介绍如何在Java中实现分页,以及涉及到的关键知识点。 首先,我们需要...

    java 分页通用代码

    在Java开发中,分页是数据检索中非常常见的一种需求,尤其在大数据量的应用场景下,为了提高用户体验和系统性能,通常需要实现分页查询功能。本通用代码着重讲解如何在Java中实现这一功能。 首先,我们需要理解分页...

    java逻辑分页

    在Java编程中,逻辑分页是一种常见的数据处理技术,特别是在Web应用中,用于展示大量数据时,以提高用户体验和性能。逻辑分页不同于物理分页,物理分页是在数据库层面进行数据切片,而逻辑分页则是在应用程序层面上...

    java 通用数字分页

    Java中的数字分页是Web应用开发中常见的需求,特别是在大数据量的展示场景下,为了提高用户体验,需要将数据分批次加载。Struts2框架作为Java Web开发中的热门选择,提供了强大的分页支持。本主题主要讲解如何在...

Global site tag (gtag.js) - Google Analytics