Java用lambda分页List里的数据 发表于 2018-12-17 | 分类于 Java | 阅读次数 | 字数: 330 因为业务需求需要循环调用第三方接口批量获取数据,在stackoverflow上找到了一种比较好的方法,加上泛型和注释方便后期维护使用。 12345678910111213141516171819202122232425262728import java.util.List;import java.util.Map;import java.util.stream.IntStream;import static java.lang.Math.min;import static java.util.stream.Collectors.toMap;/** * https://stackoverflow.com/questions/29273705/how-to-paginate-a-list-of-objects-in-java-8 * 分页工具类 Map Integer是当前页数 List当前页数内容 * * @author wlwang3 * @create 2018/12/4-18:28 **/public class PaginationUtil { public static <T> Map<Integer, List<T>> partition(List<T> list, int pageSize) { return IntStream.iterate(0, i -> i + pageSize) //循环需要页面尺寸 如pageSize=10 ,它就会10 20 30 40 50的一直循环 .limit((list.size() + pageSize - 1) / pageSize) //限制循环的次数 list的大小+页的大小 / 页的大小 .boxed() //看实现方法 把int包装成了对象 .collect(toMap(i -> i / pageSize, //返回结构 key当前页数 i包装对象后的Integer是当前循环的页数大小 i -> list.subList(i, min(i + pageSize, list.size())))); //list分页 subList(取当前循环的指针,(a <= b):如果是返回当前指针+分页的大小?:如果不是则当前的指针大小到最后一个指针的数据) }} 文章推荐ですMinecraft Sponge性能调优你真的懂得Java-OOP吗? 本文作者: Colorful_Ghost 本文链接: https://blog.vimc.cc/2018/12/17/Java用lambda分页List里的数据/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!