zoukankan      html  css  js  c++  java
  • 使用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

  • 相关阅读:
    重构:以Java POI 导出EXCEL为例
    从源码角度看LinkedList一些基本操作(jdk1.7)
    OpenCV学习笔记(1)
    尝试实现手势控制计算机(持续跟进)
    神经网络学习笔记三——梯度检验、高级优化
    神经网络学习笔记二——反向传导
    神经网络学习笔记一——Neural Network
    C++ 指针和引用 吐血整理 Pointer&Reference
    BST 解析 (二)height and deletion
    BST 解析 (一)
  • 原文地址:https://www.cnblogs.com/warehouse/p/7078997.html
Copyright © 2011-2022 走看看