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实现分页的更多相关文章

  1. 深度掌握 Java Stream 流操作,让你的代码高出一个逼格!

    概念 Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选.排序.聚合等. Stream 的操作符大体上分为两种:中间操作符和终止操作符 中 ...

  2. Java之Stream流

    Stream流的初步学习 初次学习Stream流的学习笔记,学习之前先了解一下函数式接口 概述 API是一个程序向使用者提供的一些方法,通过这些方法就能实现某些功能.所以对于流API来 说,重点是怎么 ...

  3. java中的Stream流

    java中的Stream流 说到Stream便容易想到I/O Stream,而实际上,谁规定"流"就一定是"IO流"呢?在Java 8中,得益于Lambda所带 ...

  4. Java提升四:Stream流

    1.Stream流的定义 Stream是Java中的一个接口.它的作用类似于迭代器,但其功能比迭代器强大,主要用于对数组和集合的操作. Stream中的流式思想:每一步只操作,不存储. 2.Strea ...

  5. Java Stream 流如何进行合并操作

    1. 前言 Java Stream Api 提供了很多有用的 Api 让我们很方便将集合或者多个同类型的元素转换为流进行操作.今天我们来看看如何合并 Stream 流. 2. Stream 流的合并 ...

  6. Java | Stream流、泛型、多线程 | 整理自用

    1.lambda 表达式 lambda 的延迟执行 可以对程序进行优化,尤其是使用 if {} else {} 条件判断,先判断条件是否成立,再传入计算好的参数. functionName( para ...

  7. 【重学Java】Stream流

    Stream流 体验Stream流[理解] 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集合 把&q ...

  8. 全面吃透JAVA Stream流操作,让代码更加的优雅

    全面吃透JAVA Stream流操作,让代码更加的优雅 在JAVA中,涉及到对数组.Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行 ...

  9. Java基础 | Stream流原理与用法总结

    Stream简化元素计算: 一.接口设计 从Java1.8开始提出了Stream流的概念,侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式:依旧先看核心接口的设计: BaseStream: ...

  10. 【Java必修课】图说Stream中的skip()和limit()方法及组合使用

    1 简介 本文将讲解Java 8 Stream中的两个方法:skip()和limit().这两个方法是Stream很常用的,不仅各自会被高频使用,还可以组合出现,并能实现一些小功能,如subList和 ...

随机推荐

  1. 使用SpringBatch读取csv文件

    目录 1.需求 2.解决方案 3.注意事项 1.文件路径的获取 2.各个Step如果获取到ExecutionContext中的值 3.FlatFileItemReader使用注意 4.实现步骤 1.导 ...

  2. 从0开始设计_基于STM32F1的RC522读写卡

    从0开始设计_基于STM32F1的RC522读写卡 1.介绍看网上很多RC522的教程都是基于读卡ID的,这个对于很多应用来说其实没有什么用,最近刚好有个项目需要读写卡,而RC522又是非常常用的且不 ...

  3. C# MySQL导出表结构到Excel

    软件如图,输入基础信息,点击"测试登录" 连接MySQL需要安装驱动,如下图 连接成功如下图 登录成功后,自动获取所有表信息 双击表名称,右侧查看表结构信息 导出表结构效果如下图 ...

  4. Oracle两表关联更新

    表结构.测试数据 drop table t1; drop table t2; CREATE TABLE T1 ( name VARCHAR2(10) , code VARCHAR2(10) ); AL ...

  5. #KMP,dp#洛谷 3426 [POI2005]SZA-Template

    题目 给定一个字符串\(S\),字符串可以理解成一条每个字母代表一种颜色的线段, 找到一个长度最小的串\(T\),使得在若干位置放置\(T\)后使得字符串被完全覆盖 分析 显然它要么取\(i\),要么 ...

  6. OpenHarmony Meetup常州站招募令

    OpenHarmony Meetup 常州站正火热招募中! 诚邀充满激情的开发者参与线下盛会~ 探索OpenHarmony前沿科技,畅谈未来前景, 感受OpenHarmony生态构建之路的魅力! 线下 ...

  7. C++ Break、Continue 和 数组操作详解

    C++ Break 和 Continue break 语句还可以用来跳出循环. 在以下示例中,当 i 等于 4 时跳出循环: for (int i = 0; i < 10; i++) { if ...

  8. 快速加入Health Kit,一文了解审核流程

    HUAWEI Health Kit是为华为生态应用打造的基于华为帐号和用户授权的运动健康数据开放平台. 在获取用户授权后,开发者可以使用Health Kit提供的开放能力获取运动健康数据,基于多种类型 ...

  9. HMS Core Discovery第16期直播预告|与虎墩一起,玩转AI新“声”态

    [导读] 随着人工智能不断发展,机器学习技术也开始被广泛地应用到教育.金融.零售.交通.医疗等各个领域,给我们的生活带来巨大的便利.本期Discovery直播以<与虎墩一起,玩转AI新" ...

  10. linux上操作 压缩包 的命令

    # tar.gz 解压缩 # 解压 tar -zxvf a.tar.gz # 压缩 tar -zcvf a.atr.gz a # zip 解压缩 # 压缩 zip -vr a.zip a/* # 解压 ...