`

Java List分割测试

阅读更多
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.ss.formula.functions.T;

/**
 * Project Name:FireWeb
 * File Name:TestListSplit.java
 * Package Name:
 * Date:2017年10月16日下午3:13:01
 *
*/

/**
 * ClassName:TestListSplit <br/>
 * Function: TODO ADD FUNCTION. <br/>
 * Reason:	 TODO ADD REASON. <br/>
 * Date:     2017年10月16日 下午3:13:01 <br/>
 * @author   sql
 * @version  
 * @since    JDK 1.8
 * @see 	 
 */
public class TestListSplit {
	
	private static List<Integer> createList(int len){
		List<Integer> l = new ArrayList<Integer>();
		for (int i = 0; i < len; i++) {
			l.add(i);
		}
		return l;
	}
	
	 /**
     * 分割List
     * @param list 待分割的list
     * @param pageSize 每段list的大小
     * @return List<<List<T>> 
     */
     public static <T> List<List<T>> splitList(List<T> list, int pageSize) {
        
        int listSize = list.size();                                                           //list的大小
        int page = (listSize + (pageSize-1))/ pageSize;                      //页数
        
        List<List<T>> listArray = new ArrayList<List<T>>();              //创建list数组 ,用来保存分割后的list
        for(int i=0;i<page;i++) {                                                         //按照数组大小遍历
            List<T> subList = new ArrayList<T>();                               //数组每一位放入一个分割后的list
            for(int j=0;j<listSize;j++) {                                                 //遍历待分割的list
                int pageIndex = ( (j + 1) + (pageSize-1) ) / pageSize;   //当前记录的页码(第几页)
                if(pageIndex == (i + 1)) {                                               //当前记录的页码等于要放入的页码时
                    subList.add(list.get(j));                                               //放入list中的元素到分割后的list(subList)
                }
                
                if( (j + 1) == ((j + 1) * pageSize) ) {                               //当放满一页时退出当前循环
                    break;
                }
            }
            listArray.add(subList);                                                         //将分割后的list放入对应的数组的位中
        }
        return listArray;
    }
	
	public static void main(String[] args) {
		List<Integer> l  = createList(100000);
		System.out.println(l.size());
		List<List<Integer>> sl = splitList(l, 500);
		System.out.println(sl.size());
		for (int i = 0; i < sl.size(); i++) {
			List<Integer> subl = sl.get(i);
			System.out.print(i + " [" + subl.size()+"]");
			for (Integer si : subl) {
				System.out.print(" ," + si);
			}
			System.out.println("\r");
		}
		
//		System.out.println(33%10);
	}

}


分享到:
评论

相关推荐

    java中将一个List等分成n个list的工具方法(推荐)

    Java中将一个List等分成n个List的工具方法 Java中将一个List等分成n个List的工具方法是Java编程中非常有用的技术。以下是该方法的详细介绍和实现。 方法概述 该方法的主要目的是将一个List分成n个小List,每个小...

    实现对List的分页

    分页的基本思想是将一个大List分割成多个小List,每个小List代表一页数据。分页通常涉及到两个参数:当前页数(currentPage)和每页显示的条目数(pageSize)。为了实现这个功能,我们可以创建一个名为`...

    三大修饰符List集合测试

    首先,【标题】“三大修饰符List集合测试”以及【描述】“该文档为java底层核心技术,list引用对象详解,详细介绍了list引用对象的内部机制,缓存的位置以及怎么高效的使用它,提高程序效率”共同提示我们,文档将...

    Java回溯法求分割回文字符串源码

    本话题将详细讲解如何使用Java实现回溯法来求解分割回文字符串的问题。 首先,我们需要理解什么是回溯法。回溯法是一种试探性的解决问题的方法,它尝试通过不断地尝试所有可能的解决方案,并在尝试过程中逐步排除不...

    java源码包---java 源码 大量 实例

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    java表述的数据结构(顺序表)

    接下来,`SplitList.java` 文件很可能是测试类,用于验证顺序表的各种操作,如创建、添加元素、删除元素、查找元素、分割或合并顺序表等。这些操作在顺序表中都有其特定的实现。例如,添加元素可能涉及数组的扩容,...

    java源码包3

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    java源码包2

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    自己的Java工具类库 + 主体项目测试.zip

    在这个压缩包"自己的Java工具类库 + 主体项目测试.zip"中,包含了名为"dsjava1"的文件。根据命名,我们可以猜测这可能是一个Java源代码文件或者一个包含多个Java源代码文件的目录。"dsjava1"可能是你为数据结构或...

    list分页,可直接用

    在提供的压缩包"list分页"中,可能包含了实现这种分页逻辑的源代码文件,例如Java类、测试用例或其他支持文件。这些代码可以作为参考,帮助开发者理解如何在自己的项目中实现类似的分页功能,而无需引入外部库或依赖...

    Java编程中常见的坑

    `String.split()`方法用于根据给定的分隔符将字符串分割成字符串数组。使用时需要注意分隔符的选择以及对结果数组的处理。 #### 7. 线程池的正确使用 在使用线程池时,需要正确地重写`execute`和`submit`方法,并...

    java模拟cmd控制台 java教学小程序

    3. **文件和目录操作**:模拟CMD的文件及目录操作,如`cd`(改变当前目录)、`ls`(列出目录内容),需要对Java的`File`类有深入理解,包括`exists()`, `isDirectory()`, `listFiles()`等方法。 4. **系统调用**:...

    java学习笔记模版

    - `&lt;iterator&gt;` 标签在JSP中用于遍历集合,如List,通常用于显示从后台获取的数据。在处理Excel数据时,通过`&lt;iterator&gt;`标签可以方便地展示内容。 5. **Java基础方法与对象操作**: - 设置和获取属性的方法,如`...

    AnagramGame_java_

    1. **字符串操作**:在JAVA中,`String`类提供了丰富的操作方法,如`split()`用于按特定分隔符分割字符串,`toLowerCase()`和`toUpperCase()`用于转换大小写,`length()`获取字符串长度,以及`charAt(int index)`...

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现 ,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    7.2.4 参数列表(Parameter List) 159 7.2.5 方法体(Method Body) 160 7.2.6 方法串串烧 160 7.3 方法的参数:让汽车加速 161 7.3.1 方法的参数:让汽车可以加速 161 7.3.2 带参数的方法有何不同? 162 ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    JAVA面试宝典包含名词解释,常问问题。

    JDK (Java Development Kit) 提供了完整的 Java 开发环境,包括 Java 编译器(javac)、Java 运行环境(JRE)、以及各种开发工具,如 Javadoc(生成文档)和 JUnit(单元测试)。JRE (Java Runtime Environment) 则...

    Android ListView分割线

    除了在XML布局文件中设置分割线外,还可以通过Java代码动态地设置分割线。这种方式更灵活,可以根据需要改变分割线的样式或高度。 ```java // 获取ListView对象 ListView listView = (ListView) findViewById(R.id....

    java源码包4

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

Global site tag (gtag.js) - Google Analytics