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. [MAUI]集成高德地图组件至.NET MAUI Blazor项目

    @ 目录 前期准备:注册高德开发者并创建 key 登录控制台 创建 key 获取 key 和密钥 创建项目 创建JS API Loader 配置权限 创建定义 创建模型 创建地图组件 创建交互逻辑 项 ...

  2. CDN 引入 axios 和 qs 及其使用方法

    一些小项目,没必要搭建脚手架,直接以CDN的方式引入 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo ...

  3. KGIS支持的扩展介绍

    1.postgis postgis的基本核心功能,仅支持地理图形(矢量要素),在其他Extension前启用. 2.postgis_raster 对栅格数据的支持. 3.postgis_topolog ...

  4. KingbaseES 行级安全策略介绍

    本文详细介绍了KingbaseES中通过CREATE POLICY为一个表定义一条行级安全性策略.注意为了应用已被创建的策略,在表上必须启用行级安全性. 策略名称是针对每个表的.因此,一个策略名称可以 ...

  5. KingbaseES V8R6集群运维案例之---sys_backup.sh init ‘xxxx invalid’故障

    KingbaseES V8R6集群运维案例之---sys_backup.sh init 'xxxx invalid'故障 案例说明 在KingbaseES V8R6集群sys_backup.sh在cl ...

  6. archlinux 时移(timeshift)不会自动创建快照

    这是因为没有开启定时任务服务 解决办法 1.安装定时任务服务 sudo pacman -S cronie 2.设置自启动 sudo systemctl enble cronie

  7. #dp,概率期望#AT4513 [AGC030D] Inversion Sum

    题目 分析 考虑每次交换最多影响到\(2n\)个点对的逆序对判断 不妨设\(dp[i][j]\)表示\(a[i]>a[j]\)的概率,一开始按照\(a\)求出初始的\(dp\) 之后每次交换或不 ...

  8. OpenHarmony 社区运营报告(2023 年 10 月)

      ● 截至2023年10月,OpenHarmony社区共有51家共建单位,累计超过6200名贡献者产生24.2万多个PR,2.3万多个Star,6.1万多个Fork,59个SIG. ● OpenHa ...

  9. go切片和指针切片

    转载请注明出处: 在Go语言中,切片(Slice)和指针的切片(即切片中每个元素都是指向某种数据类型的指针)是两个不同的概念,它们各自具有特定的用途和优势. 切片(Slice) 切片是对数组的一个连续 ...

  10. ​总结:Apache/Tomcat/JBOSS/Jetty/Nginx之区别和联系​

    总结:Apache/Tomcat/JBOSS/Jetty/Nginx之区别和联系 总结:Apache/Tomcat/JBOSS/Nginx区别 . 1.Apache是Web服务器,Tomcat是应用( ...