代码
import java.util.*;
public class DataPage<R> {
private List<R> data;
private Integer total;
public DataPage(Collection<R> data) {
this.data = new ArrayList<>(data);
this.total = this.data.size();
}
public List<R> getPage(Integer page, Integer size) {
List<R> c = new ArrayList<>();
if(total == 0){
return c;
}
if(total > 0 && (this.total < size || this.total.equals(size))){
return this.data;
}
int start = size*(page-1);
if(this.total < start){
return c;
}
for(int i = start; i < size*page;i++){
if(i == total){
continue;
}
c.add(data.get(i));
}
return c;
}
public DataPage<R> order(Comparator<R> comparator){
data.sort(comparator);
return this;
}
public List<R> getData() {
return data;
}
public void setData(List<R> data) {
this.data = data;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
}
测试
import lombok.Data;
import lombok.ToString;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class PageTest {
public static void main(String[] args) {
DataPage<Score> page = new DataPage<>(Arrays.asList(new Score("12",12),
new Score("23",23),new Score("1",45),
new Score("92",92),new Score("3",37)));
DataPage<Score> dataPage = page.order((Comparator.comparing(Score::getName)));
List<Score> list = dataPage.getPage(1,10);
list.forEach(System.out::println);
System.out.println("----------------------");
List<Score> list1 = dataPage.getPage(2,2);
list1.forEach(System.out::println);
}
@Data
@ToString
public static class Score{
private String name;
private Integer number;
public Score(String name, Integer number) {
this.name = name;
this.number = number;
}
}
}