`

Java List 分页

    博客分类:
  • J2SE
 
阅读更多

最近看别人的source的时候发现了一个好代码,在这里备份一下,也给有需要的人用吧

 

    public <T> List<List<T>> splitList(List<T> list, int pageSize)
    {

        int listSize = list.size();
        int page = (listSize + (pageSize - 1)) / pageSize;

        List<List<T>> listArray = new ArrayList<List<T>>();
        for (int i = 0; i < page; i++)
        {
            List<T> subList = new ArrayList<T>();
            for (int j = 0; j < listSize; j++)
            {
                int pageIndex = ((j + 1) + (pageSize - 1)) / pageSize;
                if (pageIndex == (i + 1))
                {
                    subList.add(list.get(j));
                }
                if ((j + 1) == ((j + 1) * pageSize))
                {
                    break;
                }
            }
            listArray.add(subList);
        }
        return listArray;
    }

 好吧,介于大家对上面的code蔑视,我在这里声明一下吧。

 

1.上面代码不是我写的,我上面说过了,是在看别人source的时候,感觉不错,以后可能会用到,这里留个备份。

2.上面代码是对有用的人写的,我替作者说说,如果大家感觉不满意,可以看个乐呵。没必要表示它不好吧。

3.我在这里举一个例子,这个方法还是有用的。当DAO处理量有限的时候,设定600,可是现在List有1800,

好吧,那么用上面的code分3页传到后台进行处理,也不用大家辛辛苦苦的写固定值了,设个数就ok了,感觉还是很方便的哦。

4.对,对于大数据比如上万条数据,Java JVM是会出现死机等恶劣状况,但是你为什么不用数据库呢,还用着方法干什么。code只为有需要的人写的。

 

2
2
分享到:
评论
13 楼 anayomin 2016-08-20  
对九楼继续改进
public static <T> List<List<T>> split(List<T> list, int pageSize) {
		int totalSize = list.size();
		int totalPage = (totalSize + pageSize - 1) / pageSize;
	    List<List<T>> result = new ArrayList<List<T>>(totalPage);
	    for(int i = 0, next = i * pageSize; i < totalPage; i++){
	    	result.add(new ArrayList<T>(list.subList(next, (i < totalPage -1) ? (next = next + pageSize) : totalSize)));
	    }
	    return result;
	}
12 楼 _love编程世界 2014-03-06  
只传了pageSize,那我看第二页怎么写?
11 楼 BigBird2012 2013-07-27  
不能用这个,这个上千条数据都很慢
10 楼 skzr.org 2013-07-27  
subList只是一个子视图,所以如果你要一个全新的list,可以如下:
不过发送扩容,而且copy使用的是Arrays.copyOf
	public <T> List<List<T>> split(List<T> list, int pageSize) {
		List<List<T>> result = new ArrayList<>(list.size() / pageSize + 1);
		for (int i = 0, next, max = list.size(); i < max; i = next) {
			next = i + pageSize;
			if (next > max) next = max; 
			result.add(new ArrayList<>(list.subList(i, next)));
		}
	    return result;
	}
9 楼 skzr.org 2013-07-27  
呵呵,只是工具方法而已,有不少地方需要改进啊,比如没有指定list大小导致出现list扩容,效率大打折扣。
稍微改写了下:
	public <T> List<List<T>> split(List<T> list, int pageSize) {
		List<List<T>> result = new ArrayList<>(list.size() / pageSize + 1);
		for (int i = 0, next, max = list.size(); i < max; i = next) {
			next = i + pageSize;
			if (next > max) next = max; 
			result.add(list.subList(i, next));
		}
	    return result;
	}
8 楼 fair_jm 2013-07-27  
用数据库分页就好了...一次性取数据什么的真的不可取
7 楼 xsfcl174 2013-07-27  
饿····楼主坑爹啊···正式项目过10W的数据级别,java内存肯定得爆,开发机上ArrayList过4W就爆了
6 楼 hebad90 2013-07-27  
没看到这代码的使用价值在哪里?也没看出好在哪?求科普
5 楼 zhoubaoyi 2013-07-27  
数据量大 一次都查出来不死才怪
4 楼 kfyfly 2013-07-26  
这个还出现在首页了,万一别人用了,岂不是坑爹啊
3 楼 chenhailong 2013-07-26  
嘿嘿,是的,我也这么认为。代码只为有需要的人用
2 楼 m635674608 2013-07-26  
nb啊,,正式项目用这个会死的很惨啊
1 楼 yunfeiyang0514 2013-07-26  
套了两次List有必要吗?

相关推荐

    java List分页

    用于分页 带源文件 只支持List

    javaList分页方法

    java 对listj集合的分页方法 直接调用这个方法就可以了

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

    Java List分页功能实现代码实例 Java List分页功能实现代码实例是指在Java编程语言中实现List集合的分页功能,即将一个较大的List集合分割成多个小的List集合,以便于在界面上进行数据展示和处理。在实际开发中,...

    java代码List分页源码

    通过获取list一段索引(startIndex,endIndex),实现“分页”功能

    java一个通用的分页方法

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

    java 数据分页显示

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

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

    Java中List对象的分页思想-按10个或者n个数对list进行分组 Java中List对象的分页思想是一种常用的数据处理技术,通过将一个大的List对象分割成多个小的List对象,每个小的List对象包含一定数量的元素,例如10个或n...

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

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

    实现对List的分页

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

    JAVA数字分页案例

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

    java分页代码完整版

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

    java多线程分页查询

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

    java js 分页控件

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

    list 假分页的demo

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

    用java 实现分页

    在Java编程中,分页是数据管理中一个常见的需求,特别是在处理大数据集时,为了提高用户体验和系统性能,我们通常不会一次性加载所有数据,而是分批次地加载,这就是分页的基本概念。本教程将深入讲解如何使用Java...

    java后台分页.docx

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

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

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

    java的分页代码

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

    Java Oracle分页处理

    import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm;...

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

    总结来说,面向对象的Java JDBC分页查询涉及到创建Page类来存储分页信息,构造Oracle兼容的SQL语句,以及使用PreparedStatement执行查询。在实际开发中,我们还需要关注性能优化、异常处理和代码的可维护性,确保...

Global site tag (gtag.js) - Google Analytics