stream进行分页

说明:

最近看了一篇关于java8的StreamAPI使用的文章,正好看到一个和分页查询相关的api,由此写一个demo,加深对StreamAPI的印象

模拟dao层从数据库获取数据

实体类 User

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private Integer id;private String name;private String address;
}

获取数据

public class UserDao {public List<User> findAll(){List<User> userList = new ArrayList<>(Arrays.asList(new User(1,"name","address"),new User(2,"name","address"),new User(3,"name","address"),new User(4,"name","address"),new User(5,"name","address"),new User(6,"name","address"),new User(7,"name","address"),new User(8,"name","address"),new User(9,"name","address"),new User(10,"name","address"),new User(11,"name","address"),new User(12,"name","address"),new User(13,"name","address"),new User(14,"name","address"),new User(15,"name","address"),new User(16,"name","address"),new User(17,"name","address"),new User(18,"name","address"),new User(19,"name","address"),new User(20,"name","address"),new User(21,"name","address"),new User(22,"name","")));return  userList;}
}

模拟service层进行分页处理

public class UserService {public List<User> findUserByParamToPage(Integer index,Integer pageSize){UserDao userDao = new UserDao();List<User> users =userDao.findAll().stream()/*** 过滤address为""的数据*/.filter(user -> !user.getAddress().equals(""))/*** 对数据进行id升序排序*/.sorted((u1,u2)->u1.getId().compareTo(u2.getId())).collect(Collectors.toList());/*** 对过滤后的数据进行分页处理*/List<User> userPage = users.stream().skip((index - 1) * pageSize).limit(pageSize).collect(Collectors.toList());return userPage;}
}

测试

说明:

测试期间,我就是用main方法进行测试

为了验证分页功能成功,我们使用边界值,我们一共22条记录,去除一条address为""的记录,然后分页处理,查询第5页应该是一条数据为:

[User(id=21, name=name, address=address)]

public class App {public static void main(String[] args) {UserService userService = new UserService();List<User> users = userService.findUserByParamToPage(5, 5);System.out.println(users);}
}

stream进行分页相关推荐

  1. 使用java Steam流进行逻辑分页(内存分页)

    物理分页与逻辑分页 物理分页 物理分页依赖的是某一物理实体,这个物理实体就是数据库,比如MySQL数据库提供了limit关键字,程序员只需要编写带有limit关键字的SQL语句,数据库返回的就是分页结 ...

  2. java PageUtil + stream 手动计算List 分页

    交代一下前言,数据是redis中查询 140,193,88,117 格式大概是这样. 需要切割为long类型的list数组.需要手动计算分页,去mongodb中查询数据. 这里我用的手动计算分页的是  ...

  3. java8 stream .skip() .limit() 实现分页功能

    java8 stream .skip() .limit() 实现分页功能 先分别介绍一下 skip() 和 limit(): 注意,注意,注意:数据量大或者数据复杂的情况下不要使用这种分页方式!! s ...

  4. Java8 Stream 分页-多字段排序-筛选

    分页 list.stream().skip((page-1)*limit).limit(limit).collect(Collectors.toList()) 筛选 Set<String> ...

  5. java对list集合进行分页(Stream流)

    List<String> subList = list.stream().skip((当前页数page - 1) * 每一页分页数量limit).limit(每一页分页数量limit). ...

  6. mybatis mysql cursor_MySQL JDBC/MyBatis Stream方式读取SELECT超大结果集

    情景: 遍历并处理一个大表中的所有数据, 这个表中的数据可能会是千万条或者上亿条, 很多人可能会说用分页limit--但需求本身一次性遍历更加方便, 且Oracle/DB2都有方便的游标机制. 对DB ...

  7. OpenXml编程--去除自动生成的word文档中由分页符和换行符产生的空白页

    前言 前置知识:OpenXml 首先描述下问题产生的场景.我们的业务需求是根据用户的在线作答(或导入的作答结果)数据批量产生报告.产生报告的方式是把通过工作流控制的复杂业务逻辑的产出--分析结果--和 ...

  8. Java 8 Stream Api 中的 skip 和 limit 操作

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 Java 8 Stream API 中的sk ...

  9. es_分组-分页-TransportClient实现

    说在前面: Elasticsearch Java API 有四种实现方式:分别是 TransportClient.RestClient.Jest.Spring Data Elasticsearch. ...

最新文章

  1. 简析正则表达式的使用
  2. Qt 设置textEdit插入文本的字体、大小和颜色
  3. qtcreator摄像头显示时间_三星Galaxy S11 +渲染器展现出巨大的相机凹凸和四边形曲面显示...
  4. Spring Boot文档阅读笔记-对Securing a Web Application解析
  5. PHP操作MongoDB学习笔记
  6. python安装的模块在pycharm中能用吗_pycharm安装python模块
  7. adam优化_认识 AdaMod: 一个新的有记忆的深度学习优化器
  8. Unity3D(一) 操作界面及游戏常识
  9. 如何在Win7自安装驱动
  10. SpreadJS 15.2 英文版-Crack
  11. Proxmark3教程2:用Pm3Gui_Pro V5.2 新功能 IC卡匠数据维护
  12. 当无边框窗口被子窗口遮挡导致难以调节窗口大小时,可通过处理 NCHITTEST 消息重新支持调节窗口大小
  13. JS入门笔记九:循环精灵图案例
  14. 康涅狄格大学计算机科学排名,康涅狄格大学的计算机科学排名,不可忽视的重点信息...
  15. nativefier(一行代码将任意网页转化为桌面应用)
  16. Dell戴尔笔记本电脑Vostro 14 5410原装出厂WIN10系统恢复原厂OEM系统
  17. 程序员在群里“匿名”骂老板,第二天被开除,聊天记录曝光
  18. 计算机勾兑双绝是谁发明,那些跟你说“勾兑酒”是酒精酒的人,都是在不懂装懂...
  19. 如何写cover letter 翻译自How to write a cover letter
  20. html掷骰子游戏的代码,jquery实现掷骰子小游戏

热门文章

  1. ESP8266下载AT固件
  2. 【保姆级】论文阅读与分析《Learning Heterogeneous Knowledge Base Embeddings for Explainable Recommendation》
  3. 后羿 08 ‖ 凡尘
  4. float c语言存储格式,float a=1.0f 这里的1.0f中的“f”代表什么 ?float的储存格式?...
  5. CSS实现虚线的方法
  6. 最后一次正确配置的原理
  7. 灵敏度分析领域--多种编程语言工具箱总结
  8. java中classpath_java中的classpath
  9. 快速获取安卓手机界面元素的坐标
  10. HealthKit 框架体系