import java.util.ArrayList;
import java.util.List;
class Page<T> {
private final List<T> items;
private final int pageNumber;
private final int pageSize;
public Page(List<T> items, int pageNumber, int pageSize) {
this.items = items;
this.pageNumber = pageNumber;
this.pageSize = pageSize;
}
public List<T> getItems() {
return items;
}
public int getPageNumber() {
return pageNumber;
}
public int getPageSize() {
return pageSize;
}
public boolean hasNext() {
return items.size() > pageSize;
}
public Page<T> getNextPage() {
if (!hasNext()) {
return null;
}
List<T> nextItems = items.subList(pageSize, items.size());
return new Page<T>(nextItems, pageNumber + 1, pageSize);
}
}
class Memory<T> {
private final List<T> data;
private final int pageSize;
public Memory(List<T> data, int pageSize) {
this.data = data;
this.pageSize = pageSize;
}
public Page<T> getPage(int pageNumber) {
int startIndex = (pageNumber - 1) * pageSize;
int endIndex = Math.min(startIndex + pageSize, data.size());
List<T> pageItems = data.subList(startIndex, endIndex);
return new Page<T>(pageItems, pageNumber, pageSize);
}
}
运行示例:
class Main {
public static void main(String[] args) {
// 创建一个包含100个整数的列表
List<String> data = new ArrayList<>();
for (int i = 1; i <= 100; i++) {
data.add(String.valueOf(i));
}
// 创建一个内存对象, 每页显示多少条, 前端传递
Memory<String> memory = new Memory<>(data, 100);
// 第几页, 前端传递
Page<String> page1 = memory.getPage(1);
List<String> items = page1.getItems();
System.out.println("items = " + items);
}
}