使用java.util.List的subList方法进行分页

java.util.List中有一个subList方法,用来返回一个list的一部分视图。

List<E> subList(int fromIndex, int toIndex);

它返回原来list的从[fromIndex, toIndex)之间这一部分的视图,之所以说是视图,是因为实际上,返回的list是靠原来的list支持的。返回一个以fromIndex为起始索引(包含),以toIndex为终止索引(不包含)的子列表。

但值得注意的是,返回的这个子列表的幕后其实还是原列表;也就是说,修改这个子列表,将导致原列表也发生改变;反之亦然。

比如集合中的内容为1,2,3,4,5
  list.sublist(2,4)
就返回一个子集合:它的内容包括从下标为2到下标为4,而且这是左闭右开的,就是说是从大于等于2到小于4,那子集内容就是3,4(集合的下标都是从0开始)。

把list进行分页,其中pageSize为每页数据的个数,然后从第一页开始依次输出每页的数据直至输出完。

 1 import java.util.ArrayList;
 2 import java.util.List;
 3
 4 /**
 5  *
 6  */
 7 public class ListPaging {
 8
 9     public static List<List<Integer>> paging(List<Integer> list, int pageSize) {
10         int totalCount = list.size();
11         int pageCount;
12         int m = totalCount % pageSize;
13
14         if (m > 0) {
15             pageCount = totalCount / pageSize + 1;
16         } else {
17             pageCount = totalCount / pageSize;
18         }
19
20         List<List<Integer>> totalList = new ArrayList<List<Integer>>();
21         for (int i = 1; i <= pageCount; i++) {
22             if (m == 0) {
23                 List<Integer> subList = list.subList((i - 1) * pageSize, pageSize * (i));
24                 totalList.add(subList);
25             } else {
26                 if (i == pageCount) {
27                     List<Integer> subList = list.subList((i - 1) * pageSize, totalCount);
28                     totalList.add(subList);
29                 } else {
30                     List<Integer> subList = list.subList((i - 1) * pageSize, pageSize * i);
31                     totalList.add(subList);
32                 }
33             }
34         }
35
36         return totalList;
37     }
38
39     public static void main(String[] args) {
40         List<Integer> list = new ArrayList<Integer>();
41         for (int i = 1; i < 52; i++) {
42             list.add(i);
43         }
44
45         List<List<Integer>> totalList = paging(list, 10);
46         System.out.println(totalList);
47     }
48 }

参考:http://blog.csdn.net/lululove19870526/article/details/46742515

时间: 2024-12-20 22:58:31

使用java.util.List的subList方法进行分页的相关文章

java.util.List接口的方法subList()进行分页查询

java.util.List中有一个subList方法,用来返回一个list的一部分的视图. List<E> subList(int fromIndex, int toIndex); 把list进行分页,其中以pagesize为每页数据的个数,然后从第一页开始依次输出每页的数据直至输出完 public class SubListApp{ public static void fenye(List list,int pagesize){ int totalcount=list.size(); i

java.util.TimeZone 新加方法 getTimeZone(ZoneId zoneId) 导致的问题

最近接受的项目中用spring配置了一个TimeZone对象: <bean id ="timeZone4Job" class="java.util.TimeZone" factory-method="getTimeZone"> <constructor-arg value="GMT+8:00"/> </bean> 以前是运行在 1.7 中,没什么问题.今天换了1.8的sdk,spring开始

【java】彩票中奖码生成器:java.util.Random里的方法public int nextInt(int bound)

1 package 彩票中奖码生成器; 2 3 import java.util.Random; 4 5 public class TestRandom { 6 public static void main(String[] args) { 7 Random random=new Random(); 8 int[] numbers=new int[6]; 9 int index=0; 10 while(index<numbers.length){ 11 int num=random.nextI

java.util.List的remove()方法

public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); list.add(3); list.add(4); for (int i=0; i<list.size(); i++) { if (list.get(i) == 3) { list.remove(i);//这样写不对,需要写成

java.util.Objects的主要方法

1.public static boolean equals(Object a, Object b) 2. public static int hashCode(Object o) Returns the hash code of a non-null argument and 0 for a null argument. 3.public static int hash(Object... values) Generates a hash code for a sequence of inpu

java.util.Arrays主要的方法

1. public static <T> List<T> asList(T... a) List<String> stooges = Arrays.asList("Larry", "Moe", "Curly"); 2.public static int hashCode(long[] a) 3.public static String toString(long[] a) 4.public static int

java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间

java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Date的子类,是一个包装了毫秒值的瘦包装器,允许 JDBC 将毫秒值标识为 SQL DATE 值.毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数. 为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将时间.分钟.秒和毫

Java 获取当前系统时间方法比较

转载: http://blog.csdn.net/zzjjiandan/article/details/8372617 一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; public class NowString {public static void main(String[] args) { SimpleDateFormat df = new SimpleDateFormat("yy

Java 数组基础,java.util.Arrays

定义数组 方式1(推荐,更能表明数组类型) 方式2(同C语言) 方式3?定义时直接初始化 数组运用基础 数组长度 equals() 数组元素不为基本数据类型时 二维数组 二维数组基础 变长的二维数组 java.utils.Arrays 类 参考文献: ? 数组(Array):相同类型数据的集合. 定义数组 方式1(推荐,更能表明数组类型) type[] 变量名 = new type[数组中元素的个数]; 比如: int[] a = new int[10]; 数组名,也即引用a,指向数组元素的首地