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;

  }

}

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

  1. JAVA List集合转Page(分页对象)

    /*** @version 1.0* @author: fwjia*/ import java.util.List;public class PageModel<T> {/**** 当前页 ...

  2. Java中集合相关案例(泛型通配符、Collections工具类、TreeSet、TreeMap、HashMap、HashSet和集合嵌套案例)

    集合 一.集合相关案例 1.泛型通配符案例 2.集合工具类(Collections工具类) 3.TreeSet和TreeMap案例 4.HashMap案例 5.HashSet案例 6.TreeSet案 ...

  3. java 只初始化一次_java – 仅对多个测试类执行一次初始化代码

    我正在为我的代码编写单元测试用例.我和Junit一起使用PowerMockito.我编写了一个初始化代码,它将处理我的应用程序中的所有初始化内容.以下是我的代码结构的方式: Class Service ...

  4. java map集合 事务控制_对象回收过程?线程池执行过程? map原理?集合类关系?synchronized 和 volatile ? 同一个类的方法事务传播控制还有作用吗?java 锁...

    1.  对象回收过程? 可达性分析算法: 如果一个对象从 GC Roots 不可达时,则证明此对象不可用. 通过一系列称为GC ROOTS的对象作为起点,从这些起点往下搜索,搜索走过的路径 称为引用链 ...

  5. java使用集合存储过程_详解java调用存储过程并封装成map

    详解java调用存储过程并封装成map 发布于 2020-5-1| 复制链接 摘记: 详解java调用存储过程并封装成map           本文代码中注释写的比较清楚不在单独说明,希望能帮助到大 ...

  6. java中怎样创建多个对象,java中StringBuilder.appent方法创建几个对象

    在Java中StringBuilder是继承AbstractStringBuilder,在AbstractStringBuilder是byte[] value; 存放字符内容 public Abstr ...

  7. Java程序设计——集合框架

    目录 一.概述 Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是List和Set.其中,List的特点是元素有序.元素可重复.Set的特点是元素 ...

  8. 【Java】集合框架基础编程练习题

    Q1:创建有三个属性(ID.Name.Balance)的银行账户,并可查余额 /*** 创建有三个属性(ID.Name.Balance)的银行账户,并可查余额,这是Account账户*/ public ...

  9. Java中的Set集合接口实现插入对象不重复的原理

    当使用set集合时,是需要重写set相关类的hashCode和equals方法的. 在java的集合中,判断两个对象是否相等的规则是: 1).判断两个对象的hashCode是否相等 .       如 ...

最新文章

  1. 关于Simple Joule Theif Curcuit 电路的两个提问
  2. 3DSlicer25:Report an Error
  3. 第一个程序---汇编学习笔记
  4. Black Hat 2017黑帽大会:8款值得一看的黑客工具
  5. Jenkins发布MVC应用程序
  6. dll文件懒加载_一步步学习NHibernate(5)——多对一,一对多,懒加载(2)
  7. ubuntu 16.04安装opencv 2.4.9及其关于qt的问题
  8. 风格和个性!一组微质感图标设计灵感
  9. 数据操作类:增删改查
  10. 锁 公平 非公平_推荐引擎也需要公平!
  11. SCM供应链协同管理系统解决方案
  12. Android:Java集合面试题集锦
  13. 关于8.0出现Only fullscreen opaque activities can request orientation
  14. codelldb-x86_64-windows.vsix 下载
  15. php 输入经纬度查询位置,根据经纬度查询附近地点信息
  16. ajax异步提示对号,jQuery Ajax显示对号和错号用于验证输入验证码是否正确
  17. 深度信念网络_【文章推荐】应用于油中溶解气体分析的深度信念网络与典型神经网络对比研究...
  18. 常识——server-u显示无法访问网页
  19. 字节跳动 |go 后端开发工程师社招一二三四五面面经|2022
  20. AMTD:一种适应性移动目标防御方法

热门文章

  1. PAT(乙级) 1001 害死人不偿命的(3n+1)猜想 C++
  2. P1537 弹珠 背包可行性dp
  3. Codeforces Round #617 (Div. 3) E2. String Coloring (hard version) 思维 + dp + Dilworth定理
  4. HDU - 6756 Finding a MEX-分块思想
  5. Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)
  6. P4178 Tree
  7. [LOJ 6042]「雅礼集训 2017 Day7」跳蚤王国的宰相(树的重心+贪心)
  8. 周末狂欢赛3(跳格子,英雄联盟,排序问题)
  9. 不止代码:ybtoj-棋盘分割(二维区间dp)
  10. jzoj1281-旅行【dp】