`

Array,List分页代码

 
阅读更多
package com.snail.util;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
/**
 * 分页工具类
 * @author penghuaiyi
 * @date 2013-08-30
 */
public class PageUtils {

	/**
	 * 数组分页
	 * @param source 源数组
	 * @param pageSize 每页大小
	 * @return 分页后的数组列表
	 */
    public static <T> List<T[]> pageArray(T[] source, int pageSize){
    	int totalLength = source.length; //总的数据条数
    	int totalPage = totalLength%pageSize==0 ? totalLength/pageSize : totalLength/pageSize+1; //总的页数
    	List<T[]> list = new ArrayList<T[]>(totalPage);
    	for(int page=1; page<=totalPage; page++){
    		int startIndex = (page-1)*pageSize;
    		int endIndex = startIndex+pageSize-1;
    		if(endIndex>=totalLength){
    			endIndex = totalLength-1;
    		}
    		int len = endIndex-startIndex+1;
    		T[] pageData = (T[]) Array.newInstance(source.getClass().getComponentType(), len);
    		System.arraycopy(source, startIndex, pageData, 0, len);
    		list.add(pageData);
    	}
    	return list;
    }
    
    /**
	 * List分页
	 * @param source 源list
	 * @param pageSize 每页大小
	 * @return 分页后的数据列表
	 */
    public static <T> List<List<T>> pageList(List<T> source, int pageSize){
    	int totalLength = source.size(); //总的数据条数
    	int totalPage = totalLength%pageSize==0 ? totalLength/pageSize : totalLength/pageSize+1; //总的页数
    	List<List<T>> list = new ArrayList<List<T>>(totalPage);
    	for(int page=1; page<=totalPage; page++){
    		int startIndex = (page-1)*pageSize;
    		int endIndex = startIndex+pageSize-1;
    		if(endIndex>=totalLength){
    			endIndex = totalLength-1;
    		}
    		List<T> pageData = source.subList(startIndex, endIndex+1);
    		list.add(pageData);
    	}
    	return list;
    }
    

    public static void testPageArray(){
    	Integer[] source = new Integer[100];
		for(int i=0;i<100;i++){
			source[i] = i;
		}
		
		List<Integer[]> rtn = pageArray(source,15);
		for(Integer[] value : rtn){
			for(Integer in : value){
				System.out.print(in+" ");
			}
			System.out.println();
		}
    }
    
    public static void testPageList(){
    	List<Integer> source = new ArrayList<Integer>(100);
		for(int i=0;i<100;i++){
			source.add(i);
		}
		
		List<List<Integer>> rtn = pageList(source,15);
		for(List<Integer> value : rtn){
			for(Integer in : value){
				System.out.print(in+" ");
			}
			System.out.println();
		}
    }
    
    
    
    
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		testPageArray();
		System.out.println("*******************");
		testPageList();

	}

}

 

分享到:
评论

相关推荐

    ThinkPHP5分页paginate代码实例解析

    $list = db('user')-&gt;paginate(10,false,['query'=&gt;array('id' =&gt; $id)]); 其它参数 // 总数据 $this-&gt;assign(‘total’,$list-&gt;total()); // 总页数 $total= ceil($list-&gt;total() / 10); $this-&gt;assign(...

    jquery实现数组array、集合list、json类型的分页支持多个分页

    在实际应用中,我们通常会封装一个通用的分页插件或函数,以减少重复代码。这个函数接受参数如数据源、每页数量、当前页数等,然后根据这些参数进行必要的计算和DOM更新。为了扩展功能,可以添加自定义事件或者回调...

    jquery实现数组array、集合list、json类型的分页

    2. **集合List分页**: 对于服务器端生成的集合,如Java的List,我们通常需要在服务器端完成分页逻辑,然后通过HTTP请求返回分页后的数据。这涉及到服务器端的编程,比如使用Spring MVC框架时,可以利用`Pageable`...

    分页控件和List绑定排序

    在本例中,分页控件与List对象绑定,意味着当用户在分页控件中操作时,会触发相应的请求,获取对应页的数据并填充到列表中。 1. **数据绑定**:这是将服务器端数据与前端界面元素关联的技术,使得数据的改变能实时...

    FLEX分页显示记录

    文件名为"PAGE"可能代表这个分页工具类的源代码文件,里面包含了上述功能的实现。在实际开发中,可以将这个工具类封装成一个自定义组件,便于在多个项目中复用。 综上所述,FLEX4 分页工程的核心是通过工具类实现对...

    javabean分页源代码代码

    1. **数据来源**:`Page`类中的`data`字段类型为`Object`,这意味着它可以是任何类型的集合或数组,如`List`、`Array`等。 2. **性能优化**:为了提高性能,可以考虑使用更高效的集合类型或者缓存机制来存储数据。 3...

    Mybatis分页插件 PageHelper5.0.0 使用

    使用 PageHelper5.0.0 实现 Mybatis 分页插件可以帮助开发者快速实现物理分页操作,提高开发效率和代码可读性。通过在 Service 层中调用 PageHelper.startPage() 方法,并在 Js 代码中使用 PageInfo 对象,可以轻松...

    jquery实现前台分页

    这个分页插件可能还提供了其他高级功能,如自定义样式、跳转至指定页、分页按钮数量控制等,具体使用方法可以查看插件的官方文档或示例代码。 总的来说,使用jQuery实现前台分页是一种高效且灵活的方法,它允许...

    thinkphp分页功能类

    `Page`类提供了`show()`方法,用于生成分页的HTML代码。默认情况下,它会根据设定的样式生成完整的分页链接。例如: ```php echo $Page-&gt;show(); // 输出分页HTML ``` 4. **获取分页数据**: 调用`Page`类的`...

    如何使用分页插件.pdf

    业务代码中使用分页时,通常不需要显式地声明一个Page对象,可以直接在Mapper接口方法中获取分页信息。 5. Spring Boot使用方法 当前文档中提到Spring Boot待定使用方法,不过通常情况下,如果已经添加了依赖,可以...

    ThinkPhp3.1.3仿百度分页类

    ThinkPhp仿百度分页类,在ThinkPhp3.1.3下测试通过 Author: 泡泡堂 &lt;46445280@qq.com&gt; ... $arr = $m-&gt;where($map)-&gt;limit($page-&gt;firstRow.','.$page-&gt;listRows)-&gt;select(); echo $show."&lt;hr&gt;"; print_r($arr);

    PHP分页类,样式可以自定义、支持javascript分页、各种框架使用均可配置

    PHP分页类,样式可以自定义、支持javascript分页、各种框架使用均可配置 $pageNo = isset($_REQUEST['pageNo']) ?... -&gt;setItemConfig(array('list'=&gt;array('size'=&gt;5))); echo $paginator-&gt;createString();

    pageHelper分页详细文档

    ### PageHelper 分页详细文档 #### 环境与技术栈介绍 - **JDK版本**: JDK1.8 - **Web容器**: Tomcat7及以上版本 - **框架**: SSM(Spring + SpringMVC + MyBatis) - **数据库**: Oracle #### PageHelper 分页...

    Flex前台分页

    - 分页组件:Flex提供了一些内置的分页组件,如DataGrid和List,它们通常带有内置的分页功能。开发者可以通过设置其属性,如pageSize(每页显示条目数),currentPage(当前页数)等来实现分页。 - 自定义分页:...

    JavaScript操作XML实例代码(获取新闻标题并分页,并分页)

    需要注意的是,代码中使用了new Array()构造数组,这是一种较旧的JavaScript数组创建方式,现代JavaScript推荐使用[]字面量或Array构造函数来创建数组。 3. XML文件结构 从给定的XML代码示例来看,它描述了一个...

    flex 分页学习例子

    1. **数据集(Data Provider)**:分页的基础是数据集,它可以是Array、ArrayCollection或其他支持数据绑定的数据源。数据集应包含所有要显示的数据,并负责管理分页逻辑。 2. **Pagination组件**:Flex并没有内置...

    基于桌面的flex的分页实现

    在Flex中,`DataGrid`组件是最常用的用于展示表格数据的组件,它可以绑定到各种数据源,包括Array、XMLList、甚至远程数据服务。在处理大量数据时,我们通常不会一次性加载所有数据,而是通过分页的方式逐页加载。`...

    利用VUE框架,实现列表分页功能示例代码

    这里假设我们有一个名为`$ApiConf.api_order_detail_list`的接口,它需要一个`start`参数来指定数据的起始位置。在`success`回调函数中,我们更新`records`(数据列表)、`start`(当前数据起始位置)和`total`(总...

    PageHelper分页插件的使用方法。

    ### PageHelper 分页插件使用详解 #### 一、PageHelper简介 PageHelper是一款针对MyBatis的强大分页插件,它支持多种数据库,并且能够为开发者提供方便快捷的分页功能实现。PageHelper不仅提供了丰富的自定义设置...

Global site tag (gtag.js) - Google Analytics