JAVA List集合转Page(分页对象) java 分页 PageModel 测试类TestPagerModel

 

http://www.blogjava.net/jzone/archive/2015/06/05/308842.html?opt=admin

/**

 * @version 1.0

 * @author: fwjia

 */

import java.util.List;

 

public class PageModel<T> {

    /***

     * 当前页

     */

    private int page = 1;

 

    /***

     * 总页数

     */

    public int totalPages = 0;

 

    /***

     * 每页数据条数

     */

    private int pageRecorders;

 

    /***

     * 总页数

     */

    private int totalRows = 0;

 

    /***

     * 每页的起始数

     */

    private int pageStartRow = 0;

 

    /***

     * 每页显示数据的终止数

     */

    private int pageEndRow = 0;

 

    /***

     * 是否有下一页

     */

    private boolean hasNextPage = false;

 

    /***

     * 是否有前一页

     */

    private boolean hasPreviousPage = false;

 

    /***

     * 数据集合

     */

    private List<T> list;

 

 

    public PageModel(List<T> list, int pageRecorders) {

        // 通过对象集,记录总数划分

        init(list, pageRecorders);

    }

 

    /** *//**

     * 初始化list,并告之该list每页的记录数

     * @param list 数据几个

     * @param pageRecorders 一页显示多少数据

     */

    public void init(List<T> list, int pageRecorders) {

        this.pageRecorders = pageRecorders;

        this.list = list;

        totalRows = list.size();

        hasPreviousPage = false;

        if ((totalRows % pageRecorders) == 0) {

            totalPages = totalRows / pageRecorders;

        else {

            totalPages = totalRows / pageRecorders + 1;

        }

 

        if (page >= totalPages) {

            hasNextPage = false;

        else {

            hasNextPage = true;

        }

 

        if (totalRows < pageRecorders) {

            this.pageStartRow = 0;

            this.pageEndRow = totalRows;

        else {

            this.pageStartRow = 0;

            this.pageEndRow = pageRecorders;

        }

    }

 

 

    // 判断要不要分页

    public boolean isNext() {

        return list.size() > 5;

    }

 

    public void setHasPreviousPage(boolean hasPreviousPage) {

        this.hasPreviousPage = hasPreviousPage;

    }

 

    public String toString(int temp) {

        String str = Integer.toString(temp);

        return str;

    }

 

    public void description() {

 

        String description = "共有数据数:" this.getTotalRows() +

 

                "共有页数: " this.getTotalPages() +

 

                "当前页数为:" this.getPage() +

 

                " 是否有前一页: " this.isHasPreviousPage() +

 

                " 是否有下一页:" this.isHasNextPage() +

 

                " 开始行数:" this.getPageStartRow() +

 

                " 终止行数:" this.getPageEndRow();

 

        System.out.println(description);

    }

 

    public List getNextPage() {

        page = page + 1;

 

        disposePage();

 

        System.out.println("用户凋用的是第" + page + "页");

        this.description();

        return getObjects(page);

    }

 

    /**

     * 处理分页

     */

    private void disposePage() {

 

        if (page == 0) {

            page = 1;

        }

 

        if ((page - 1) > 0) {

            hasPreviousPage = true;

        else {

            hasPreviousPage = false;

        }

 

        if (page >= totalPages) {

            hasNextPage = false;

        else {

            hasNextPage = true;

        }

    }

 

    public List getPreviousPage() {

 

        page = page - 1;

 

        if ((page - 1) > 0) {

            hasPreviousPage = true;

        else {

            hasPreviousPage = false;

        }

        if (page >= totalPages) {

            hasNextPage = false;

        else {

            hasNextPage = true;

        }

        this.description();

        return getObjects(page);

    }

 

    /**

     * 获取第几页的内容

     *

     * @param page 当前页面

     * @return

     */

    public List<T> getObjects(int page) {

        if(page == 0){

            this.setPage(1);

        }

        else{

            this.setPage(page);

        }

        this.disposePage();

        if (page * pageRecorders < totalRows) {

            // 判断是否为最后一页

            pageEndRow = page * pageRecorders;

            pageStartRow = pageEndRow - pageRecorders;

        else {

            pageEndRow = totalRows;

            pageStartRow = pageRecorders * (totalPages - 1);

        }

 

        List<T> objects = null;

        if (!list.isEmpty()) {

            objects = list.subList(pageStartRow, pageEndRow);

        }

        //this.description();

        return objects;

    }

 

    public List<T> getFistPage() {

        if (this.isNext()) {

            return list.subList(0, pageRecorders);

        else {

            return list;

        }

    }

 

    public boolean isHasNextPage() {

        return hasNextPage;

    }

 

 

    public void setHasNextPage(boolean hasNextPage) {

        this.hasNextPage = hasNextPage;

    }

 

 

    public List getList() {

        return list;

    }

 

 

    public void setList(List list) {

        this.list = list;

    }

 

 

    public int getPage() {

        return page;

    }

 

 

    public void setPage(int page) {

        this.page = page;

    }

 

 

    public int getPageEndRow() {

        return pageEndRow;

    }

 

 

    public void setPageEndRow(int pageEndRow) {

        this.pageEndRow = pageEndRow;

    }

 

 

    public int getPageRecorders() {

        return pageRecorders;

    }

 

 

    public void setPageRecorders(int pageRecorders) {

        this.pageRecorders = pageRecorders;

    }

 

 

    public int getPageStartRow() {

        return pageStartRow;

    }

 

 

    public void setPageStartRow(int pageStartRow) {

        this.pageStartRow = pageStartRow;

    }

 

 

    public int getTotalPages() {

        return totalPages;

    }

 

 

    public void setTotalPages(int totalPages) {

        this.totalPages = totalPages;

    }

 

 

    public int getTotalRows() {

        return totalRows;

    }

 

 

    public void setTotalRows(int totalRows) {

        this.totalRows = totalRows;

    }

 

 

    public boolean isHasPreviousPage() {

        return hasPreviousPage;

    }

 

}

 

 

 

 

测试类TestPagerModel 

 

import java.util.ArrayList;
import java.util.List;

/**
 * @version 1.0
 * @author: fwjia
 */
public class TestPagerModel {

    public static void main(String args[]) {
        List<String> list = new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        list.add("f");
        list.add("g");
        list.add("h");
        list.add("h");
        list.add("i");
        list.add("j");
        list.add("k");
        list.add("l");
        list.add("m");
        PageModel<String> pm = new PageModel(list, 5);

        List<String> sublist = pm.getObjects(2);
        for(int i = 0; i < sublist.size(); i++) {
            System.out.println(sublist.get(i));
        }
    }

}

 

 

 

上面的在项目中使用了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

在java中实现list分页
原创墨咖 最后发布于2019-06-29 17:12:54 阅读数 162  收藏
展开
        ArrayList list = new ArrayList();
        list.add("name");
        list.add("age");
        list.add(16);
        list.add("name1");
        list.add("age1");
        list.add(161);
        list.add("name2");
        list.add("age2");
        list.add(162);
        System.out.println("分页参数:0,3--:"+list.subList(0,3));
        System.out.println("分页参数:3,6--:"+list.subList(3,6));
        System.out.println("分页参数:6,9--:"+list.subList(6,9));
 
————————————————
版权声明:本文为CSDN博主「墨咖」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37335810/article/details/94177407

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/**

 * java内存分页工具类

 */

public class JavaMemoryPageUtil {

  

  /**

   * 获取分页数据

   * @param dataList 进行分页的数据集合

   * @param pageNum  第几页

   * @param pageSize 每页显示多少条

   * @return

   */

  @SuppressWarnings({ "rawtypes", "unchecked" })

  public static List getPageLimit(List dataList, int pageNum, int pageSize){

    if(CollectionUtils.isEmpty(dataList)){

      return dataList;

    }

    List resultList = new ArrayList();

    // 所有dataList数据中的第几条

    int currIdx = pageNum > 1 ? (pageNum -1) * pageSize : 0;

    for (int i = 0; i < pageSize && i < dataList.size() - currIdx; i++) {

      resultList.add(dataList.get(currIdx + i));

    }

    return resultList;

  }

}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET应用迁移到.NET Core(三)从商业角度看移植过程

2016年12月1日下午微软技术大会Microsoft Ignite China&#xff0c;有幸和大家分享一门课程&#xff0c;课程信息如下&#xff0c;欢迎大家到时来捧场。本文介绍下从商业角度看移植过程。 。 创建项目移植进度表 创建移植进度表时要考虑所有可能的风险&#xff0c;包括技术和商…

drawroundrect java_Canvas中drawRoundRect()方法介绍

画布Canvas的一个方法&#xff0c;绘制圆角矩形逛CSDN的时候&#xff0c;无意看到之前关注的一个博主&#xff0c;出了一本书《Android自定义控件》&#xff0c;以前学自定义控件的时候&#xff0c;就是看他的文章的&#xff0c;这次出书了&#xff0c;再加上当当做活动&#x…

Spring(笔记)

简介 Spring概述 简介 Spring : 春天 —>给软件行业带来了春天 2002年&#xff0c;Rod Jahnson首次推出了Spring框架雏形interface21框架。 2004年3月24日&#xff0c;Spring框架以interface21框架为基础&#xff0c;经过重新设计&#xff0c;发布了1.0正式版。 很难想象…

Java IO: PipedOutputStream

转载自 Java IO: PipedOutputStream 译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) PipedOutputStream可以往管道里写入读取字节流数据&#xff0c;代码如下&#xff1a; OutputStream output new PipedOutputStream(pipedInputStream);while(moreData) …

mybatis报错Type interface xxx.Dao is not known to the MapperRegistry

今天在做mybatis的时候&#xff0c;遇到一个错误&#xff0c;大家看看这个错误吧&#xff1a;org.apache.ibatis.binding.BindingException: Type interface cn.mybatis_chop10_1.dao.IEmpDao is not known to the MapperRegistry. 我前找找后找找&#xff0c;就是找不出来&…

Navicat Premium 11 12 闪退

卸载有道词典 重新安装 Navicat Premium 11

java弹弹球实验报告_Java弹球游戏实验报告—chen

Java弹球游戏实验报告—chen 课 程 设 计 报 告 题 目 弹球小游戏 姓 名 方成 学 号 20 专 业 java 指导教师 陈华恩 2013年 12 月 30 目录 一、实验目的2 二、需求分析2 三、实验任务2 1、设计3 2、程序要求&#xff1a;3 3、选作题&#xff1a;3 四、开发工具与平台3 五、设计…

.NET应用迁移到.NET Core(二)风险评估

2016年12月1日下午微软技术大会Microsoft Ignite China&#xff0c;有幸和大家分享一门课程&#xff0c;课程信息如下&#xff0c;欢迎大家到时来捧场。本文介绍下应用迁移的风险评估。 很多移植项目超出预算或未能按时完成&#xff0c;主要是因为没有很好地管理移植过程中可能…

Java IO: PipedInputStream

转载自 Java IO: PipedInputStream译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) PipedInputStream可以从管道中读取字节流数据&#xff0c;代码如下&#xff1a; InputStream input new PipedInputStream(pipedOutputStream); int data input.read(); …

java阿里数据库连接池_Java学习:数据库连接池技术

本节内容数据库连接池Spring JDBC &#xff1a; JDBC Template数据库连接池1.概念&#xff1a;其实就是一个容器(集合)&#xff0c;存放数据库连接的容器当系统初始化好后&#xff0c;容器中会申请一些连接对象&#xff0c;当用户来访问数据库时&#xff0c;从容器中获取连接对…

/ vs /*

/ 匹配所有的请求&#xff1b;&#xff08;不包括.jsp&#xff09; /* 匹配所有的请求&#xff1b;&#xff08;包括.jsp&#xff09; <servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mappi…

.NET应用迁移到.NET Core(一)

2016年12月1日下午微软技术大会Microsoft Ignite China&#xff0c;有幸和大家分享一门课程&#xff0c;课程信息如下&#xff0c;欢迎大家到时来捧场。本文介绍下应用迁移的一个过程。 把一个运行在某个操作系统和硬件结构上的软件&#xff0c;在另一个操作系统和硬件结构上重…

mybatis关联配置(一对多配置)

mybatis框架的关联配置&#xff1a; 首先假设我们数据库中有两个表&#xff0c;一个表示move&#xff0c;另一个是moveType,move里面有一个字段typeid,与moveType表里面的id相对应。相信大家已经看出来了&#xff0c;一个moveType对应多个move,我们查询move字段的时候&#xff…

js模块化历程

转载自 js模块化历程这是一篇关于js模块化历程的长长的流水账&#xff0c;记录js模块化思想的诞生与变迁&#xff0c;展望ES6模块化标准的未来。经历过这段历史的人或许会感到沧桑&#xff0c;没经历过的人也应该知道这段历史。无模块时代在ajax还未提出之前&#xff0c;js还只…

WIN10的IE错误代码inet_e_resource_not_found解决办法

WIN10的IE错误代码inet_e_resource_not_found解决办法 原创 候鸟307183846 最后发布于2019-08-27 13:31:54 阅读数 2413 收藏 展开 解决方案&#xff1a; 1、在Internet选项里&#xff0c;点《连接》标签&#xff0c;按下《局域网设置》按钮&#xff0c;在对话框里&#…

java schema名_关于Schema的名字空间

基本的XML Schema的使用就是这样&#xff0c;下面我们要介绍XML Schema的另外一个核心的部分也是Schema最关键的一个部分&#xff0c;就是关于Schema的名字空间(namespace)的问题。在上面关于XML Schema的介绍中&#xff0c;为了把读者集中到对XML Schema的语法理解上&#xff…

404问题

、配置Tomcat 启动测试&#xff01; 可能遇到的问题&#xff1a;访问出现404&#xff0c;排查步骤&#xff1a; 查看控制台输出&#xff0c;看一下是不是缺少了什么jar包。如果jar包存在&#xff0c;显示无法输出&#xff0c;就在IDEA的项目发布中&#xff0c;添加lib依赖&…

@Valid注解的使用---SpringMvc中的校验框架@valid和@validation的概念及相关使用

https://www.cnblogs.com/charlypage/p/9385146.html 第5章—构建Spring Web应用程序—关于spring中的validate注解后台校验的解析 关于spring中的validate注解后台校验的解析 在后台开发过程中&#xff0c;对参数的校验成为开发环境不可缺少的一个环节。比如参数不能为null&…

如何设计java线程安全类_如何设计线程安全的Java程序

什么是线程安全的(thread-safe)&#xff1f;在java中&#xff0c;线程安全的指的是代码可以在并发的或者多线程的环境下安全的使用或者共享&#xff0c;并且它们都将按照期望的方式运行。任何代码&#xff0c;类或者对象&#xff0c;如果它们在并发的环境中运行表现出的行为与在…

java中的AIO

转载自 java中的AIO简介jdk7中新增了一些与文件(网络)I/O相关的一些api。这些API被称为NIO.2&#xff0c;或称为AIO(Asynchronous I/O)。AIO最大的一个特性就是异步能力&#xff0c;这种能力对socket与文件I/O都起作用。AIO其实是一种在读写操作结束之前允许进行其他操作的I/O…