您的位置:首页 > 编程语言 > Java开发

利用java8 stream api 实现List集合分页获取工具

2017-11-12 15:04 1376 查看
package com.test.paging;

import java.util.Arrays;
import java.util.List;

/**
* @author kevin.chen
*         Date 2017/11/9
*         Time 18:05
*/
public class ListPagingTest {

public static void main(String[] args) {
List<String> list = Arrays.asList("ab", "ce", "re", "asf", "saf", "abc", "111");

PagingList<String> paging = new PagingList<>(list, 2);

while (paging.hasNext()) {
paging.next().forEach(System.out::println);
}

}

}


自己利用java8 stream api 实现的List集合分页获取工具 分享给大家
package com.bestpay.account.core.common;

import java.util.List;
import java.util.stream.Collectors;

/**
* @author kevin.chen
*         Date 2017/11/9
*         Time 18:11
*         对数据集合进分页获取
*/
public class PagingList<T> {

/**
* 总页数
*/
private int totalPage = 0;

/**
* 当前是第几页
*/
private int curPageNo = 0;

/**
* 每页的大小
*/
private int pageSize = 0;

/**
* 每页默认大小
*/
private static final int DEFAULT_PAGE_SIZE = 500;

private List<T> pageData = null;

public PagingList(List<T> pageResult, int pageSize) {
this.pageSize = pageSize;
this.pageData = pageResult;
init(pageResult, pageSize);
}

public PagingList(List<T> pageResult) {
this(pageResult, DEFAULT_PAGE_SIZE);
}

private void init(List<T> pageResult, int pageSize) {
if (pageSize <= 0) {
throw new IllegalArgumentException("Paging size must be greater than zero.");
}
if (null == pageResult) {
throw new NullPointerException("Paging resource list must be not null.");
}
if (pageResult.size() % pageSize > 0) {
this.totalPage = (pageResult.size() / pageSize) + 1;
} else {
this.totalPage = pageResult.size() / pageSize;
}
}

/**
* 返回当前剩余页数
*
* @return
*/
private int getSurplusPage() {
if (pageData.size() % pageSize > 0) {
return (pageData.size() / pageSize) + 1;
} else {
return pageData.size() / pageSize;
}

}

/**
* 返回是否还有下一页数据
*
* @return
*/
public boolean hasNext() {
return pageData.size() > 0;
}

/**
* 获取分页后,总的页数
*
* @return
*/
public int getTotalPage() {
return totalPage;
}

public List<T> next() {
List<T> pagingData = pageData.stream().limit(pageSize).collect(Collectors.toList());
pageData = pageData.stream().skip(pageSize).collect(Collectors.toList());
return pagingData;
}

/**
* 返回当前页数
*
* @return
*/
public int getCurPageNo() {
return totalPage - getSurplusPage();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java8 集合分页 stream