java list 分页,方便分批处理整个list的数据

java list 分页,方便分批处理整个list的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
 
public class ListPageUtil<T> {
     
     /**
      * 每页显示条数
      */
     private int pageSize;
     
     /**
      * 总页数
      */
     private int pageCount;
     
     /**
      * 原集合
      */
     private List<T> data;
 
     public ListPageUtil(List<T> data, int pageSize) {
         if (data == null || data.isEmpty()) {
             throw new IllegalArgumentException( "data must be not empty!" );
         }
 
         this .data = data;
         this .pageSize = pageSize;
         this .pageCount = data.size()/pageSize;
         if (data.size()%pageSize!= 0 ){
             this .pageCount++;
         }
     }
 
     /**
      * 得到分页后的数据
      *
      * @param pageNum 页码
      * @return 分页后结果
      */
     public List<T> getPagedList( int pageNum) {
         int fromIndex = (pageNum - 1 ) * pageSize;
         if (fromIndex >= data.size()) {
             return Collections.emptyList();
         }
 
         int toIndex = pageNum * pageSize;
         if (toIndex >= data.size()) {
             toIndex = data.size();
         }
         return data.subList(fromIndex, toIndex);
     }
 
     public int getPageSize() {
         return pageSize;
     }
 
     public List<T> getData() {
         return data;
     }
 
     public int getPageCount() {
         return pageCount;
     }
 
     public static void main(String[] args) {
         Integer[] array = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 };
         List<Integer> list = Arrays.asList(array);
 
         ListPageUtil<Integer> pager = new ListPageUtil<Integer>(list, 10 );
        
         System.out.println(pager.getPageCount());
 
         List<Integer> page1 = pager.getPagedList( 1 );
         System.out.println(page1);
 
         List<Integer> page2 = pager.getPagedList( 2 );
         System.out.println(page2);
 
         List<Integer> page3 = pager.getPagedList( 3 );
         System.out.println(page3);
     }
}

更多最佳实践技术文章


Java中的List可以通过分页来实现对数据分批处理,常见的方法有两种: 1. 使用subList方法实现分页 List提供了subList方法,可以截取List中某一段数据作为一个子List返回,此方法的参数是起始索引和终止索引,起始索引包含在子List中,而终止索引则不包含在子List中。因此,可以通过计算起始索引和终止索引来实现分页。 例如,假设我们有一个List<Integer>,要将其中的数据按照每页10条进行分页,可以按照如下代码实现: ``` List<Integer> list = new ArrayList<>(); // 初始化list int pageNum = 2; // 第2页 int pageSize = 10; // 每页10条数据 int startIndex = (pageNum - 1) * pageSize; int endIndex = pageNum * pageSize; if (endIndex > list.size()) { endIndex = list.size(); } List<Integer> subList = list.subList(startIndex, endIndex); ``` 2. 使用分页插件实现分页 除了手动计算起始索引和终止索引之外,还可以使用一些开源的分页插件来实现分页功能,比如MyBatis提供的分页插件PageHelper。使用分页插件可以简化代码,提高开发效率。 以PageHelper为例,可以按照如下步骤来实现分页: 1. 引入PageHelper的Maven依赖: ``` <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.2.1</version> </dependency> ``` 2. 在MyBatis的配置文件中配置PageHelper插件: ``` <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"/> </plugins> ``` 3. 在Java代码中使用PageHelper.startPage方法来开启分页功能: ``` int pageNum = 2; // 第2页 int pageSize = 10; // 每页10条数据 PageHelper.startPage(pageNum, pageSize); List<Integer> list = mapper.selectList(); // 进行查询操作 ``` 使用PageHelper插件可以自动计算起始索引和终止索引,而且还支持多种数据库的分页方式,非常方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值