Java PageInfo手动对list进行分页
时间: 2023-08-23 15:03:49 浏览: 93
在Java中对list进行分页,可以通过对list进行切片(slice)来实现。下面是一个示例代码,可以将一个list按照指定的每页数量进行分页:
```java
public class Paginator<T> {
private List<T> items;
private int pageSize;
public Paginator(List<T> items, int pageSize) {
this.items = items;
this.pageSize = pageSize;
}
public List<T> getPage(int pageNumber) {
int startIndex = (pageNumber - 1) * pageSize;
int endIndex = Math.min(startIndex + pageSize, items.size());
return items.subList(startIndex, endIndex);
}
public int getTotalPages() {
return (int) Math.ceil((double) items.size() / pageSize);
}
}
```
这个类接受两个参数:一个是要分页的list,另一个是每页的数量。它提供了两个方法:getPage用于获取指定页数的分页后的list,getTotalPages用于获取总页数。
例如,假设有一个包含10个整数的list,需要每页分页3个,可以使用以下代码进行分页:
```java
List<Integer> items = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int pageSize = 3;
Paginator<Integer> paginator = new Paginator<>(items, pageSize);
for (int i = 1; i <= paginator.getTotalPages(); i++) {
List<Integer> pageItems = paginator.getPage(i);
System.out.println(pageItems);
}
```
这个代码会输出:
```
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10]
```
注意,这个类并没有改变原始的list,而是返回了一个新的分页后的list。如果你需要在原始list上进行分页,可以使用类似`items.subList(startIndex, endIndex).clear(); items.addAll(startIndex, newItems);`的语法来替换原始的list的对应部分。
阅读全文