利用java8 stream api 實現List集合分頁獲取工具
阿新 • • 發佈:2018-11-27
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(); } }