Java的Stream流的分页,Stream的skip和limit实现分页
1、工具类
package com.cc.testproject.utils;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
/** List分页工具类
* @author CC
* @since 2022/2/16
**/
@Component
public class StreamUtils<T> {
/** stream分页公用方法(返回传入的List)
* @param t T
* @param page 当前页
* @param pageTotal 每页总条数
* @return List<T>
**/
public List<T> pageSkipLimit(List<T> t, Integer page, Integer pageTotal) {
return t.stream()
.skip((long) (page - 1) * pageTotal)
.limit(pageTotal)
.collect(Collectors.toList());
}
/** 获取分页后的pageInfo。(设置了vos,总条数)
* @param finalVos 需要分页的vos
* @param page 当前页
* @param pageTotal 每页条数
* @return com.github.pagehelper.PageInfo<T>
* @since 2023/5/22 0022
* @author CC
**/
public PageInfo<T> getPageInfo(List<T> finalVos, Integer page, Integer pageTotal) {
PageInfo<T> of = new PageInfo<>();
of.setTotal(finalVos.size());
//手动分页:finalVos
List<T> pageVos = this.pageSkipLimit(finalVos, page, pageTotal);
of.setList(pageVos);
return of;
}
}
2、使用
@Resource
private StreamUtils<User> streamUtils;
@Test
public void test0001()throws Exception{
User user1 = new User();
user1.setName("第一个");
User user2 = new User();
user2.setName("第二个");
User user3 = new User();
user3.setName("第三个");
List<User> vos = Arrays.asList(user1,user2,user3);
List<User> users = streamUtils.pageSkipLimit(vos, 2, 1);
System.out.println("分页后的数据:" + users);
}
- 如:
- 第一页,每页一个

- 第二页,每页一个

Java的Stream流的分页,Stream的skip和limit实现分页的更多相关文章
- 深度掌握 Java Stream 流操作,让你的代码高出一个逼格!
概念 Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选.排序.聚合等. Stream 的操作符大体上分为两种:中间操作符和终止操作符 中 ...
- Java之Stream流
Stream流的初步学习 初次学习Stream流的学习笔记,学习之前先了解一下函数式接口 概述 API是一个程序向使用者提供的一些方法,通过这些方法就能实现某些功能.所以对于流API来 说,重点是怎么 ...
- java中的Stream流
java中的Stream流 说到Stream便容易想到I/O Stream,而实际上,谁规定"流"就一定是"IO流"呢?在Java 8中,得益于Lambda所带 ...
- Java提升四:Stream流
1.Stream流的定义 Stream是Java中的一个接口.它的作用类似于迭代器,但其功能比迭代器强大,主要用于对数组和集合的操作. Stream中的流式思想:每一步只操作,不存储. 2.Strea ...
- Java Stream 流如何进行合并操作
1. 前言 Java Stream Api 提供了很多有用的 Api 让我们很方便将集合或者多个同类型的元素转换为流进行操作.今天我们来看看如何合并 Stream 流. 2. Stream 流的合并 ...
- Java | Stream流、泛型、多线程 | 整理自用
1.lambda 表达式 lambda 的延迟执行 可以对程序进行优化,尤其是使用 if {} else {} 条件判断,先判断条件是否成立,再传入计算好的参数. functionName( para ...
- 【重学Java】Stream流
Stream流 体验Stream流[理解] 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集合 把&q ...
- 全面吃透JAVA Stream流操作,让代码更加的优雅
全面吃透JAVA Stream流操作,让代码更加的优雅 在JAVA中,涉及到对数组.Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行 ...
- Java基础 | Stream流原理与用法总结
Stream简化元素计算: 一.接口设计 从Java1.8开始提出了Stream流的概念,侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式:依旧先看核心接口的设计: BaseStream: ...
- 【Java必修课】图说Stream中的skip()和limit()方法及组合使用
1 简介 本文将讲解Java 8 Stream中的两个方法:skip()和limit().这两个方法是Stream很常用的,不仅各自会被高频使用,还可以组合出现,并能实现一些小功能,如subList和 ...
随机推荐
- Java Agent技术
在定位公司问题的时候,需要了解一下skywalking的相关知识,而agent就提上了日程. 官网文档 Agent技术是Jdk在1.5版本之后,所提供的一个在jvm启动前后对部分java类代理加强的机 ...
- 运行xxl-job,整合xxl-job至jeecg-boot项目
1.前言:xxl-job是一个分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 源码仓库地址:https://gitee.co ...
- KingbaseES参数track_activity_query_size介绍
背景 同事A在客户现场,最近注意到客户的主数据库性能有所下降,尤其是在高峰时段.怀疑可能有一些复杂的查询影响了数据库的性能,但尚未确定具体是哪些查询. 为了诊断问题,A决定查看高峰期正在执行的查询,先 ...
- Java对象序列化和反序列化
Java类的序列化和反序列化 序列化:指将对象转换为字节序列的过程,也就是将对象的信息转换成文件保存. 反序列化:将字节序列转换成目标对象的过程,也就是读取文件,并转换为对象. 几个关键点: 必须实现 ...
- 06 PSP成熟度模型【软件过程与管理】
PSP成熟度模型(Personal Software Process) 个体度量过程 PSP3 周期开发 个体计划过程 PSP2 代码评审 设计评审 PSP2.1 设计模板 个体质量管理过程 PSP1 ...
- Android记账本界面实现
<!--activity_main.xml-->1 <?xml version="1.0" encoding="utf-8"?> 2 & ...
- 对OpenHarmony中LiteOS的内核分析——超时原理和应用
前言 在软件世界里面,超时是一个非常重要的概念.比如 ● 当前线程暂时休眠1秒钟,休眠结束后继续执行 ● 每5秒钟采集一下CPU利用率 ● 数据发送失败,2秒钟以后再试一试 ● 等待某种数据,但最多等 ...
- 【FAQ】HMS Core推送服务推送角标的开发及常见问题解答
目录 1.发送消息并显示桌面数字角标. 2.如何清除数字角标? 3.如何设置圆点角标? 4.应用桌面图标角标开关无法开启或未显示开关. 5.推送消息设置了角标字段但未显示角标? 6.未设置角标参数,但 ...
- IE8页面失去焦点,动态删除element
当页面失去焦点(切换到其他标签页 / 切换到其他软件),触发失焦事件,然后动态删除element 兼容IE8 if(window.ActiveXObject){ window.attachEvent( ...
- CS101
Turing machine:图灵机 理论上可以计算任何东西 CPU(Center Process Unit):中央处理器 是现代电脑的"大脑",其中包含数十亿细小开关的硅片,即晶 ...