Java實(shí)現(xiàn)List分頁(yè)
前述:
- 有從1到8的8個(gè)student
- 將8個(gè)student分成3頁(yè)
代碼如下:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student("1"));
list.add(new Student("2"));
list.add(new Student("3"));
list.add(new Student("4"));
list.add(new Student("5"));
list.add(new Student("6"));
list.add(new Student("7"));
list.add(new Student("8"));
int pageSize = 3;
List<List<Student>> pages = getPages(list, pageSize);
for (int i = 0; i < pageSize; i++) {
List<Student> page = pages.get(i);
System.out.println("分頁(yè)" + i + "內(nèi)容如下:");
for (Student student : page) {
System.out.println(student.getName());
}
}
}
//分頁(yè)方法
public static <T> List<List<T>> getPages(Collection<T> c, Integer pageSize) {
if (c == null)
return Collections.emptyList();
List<T> list = new ArrayList<T>(c);
if (pageSize == null || pageSize <= 0 || pageSize > list.size())
pageSize = list.size();
int numPages = (int) Math.ceil((double)list.size() / (double)pageSize);
List<List<T>> pages = new ArrayList<List<T>>(numPages);
for (int pageNum = 0; pageNum < numPages;)
pages.add(list.subList(pageNum * pageSize, Math.min(++pageNum * pageSize, list.size())));
return pages;
}
}
class Student {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(String name) {
this.name = name;
}
}
內(nèi)容參考:https://stackoverflow.com/questions/19688235/how-to-implement-pagination-on-a-list