当前位置: 首页 > news >正文

Java优化后台分页

第一种情况:先查询出所有记录,再进行分页处理(分页中可以异步处理)

优化前:

List<String> list = Arrays.asList("1","2","3","4","5","6","7","8");for (int i = 0; ; i++) {List<String> list1 = list.stream().skip(i* 2L).limit(2).collect(Collectors.toList());System.out.print(list1.size()+",");if(list1.size()<2){break;}System.out.println(list1);}

优化后:

public class PaginationExample {  public static void main(String[] args) {  List<String> list = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8");  int pageSize = 2;  for (int i = 0; i < Math.ceil((double) list.size() / pageSize); i++) {  int start = i * pageSize;  int end = Math.min(start + pageSize, list.size());  List<String> subList = list.subList(start, end);  System.out.print(subList.size() + ",");  System.out.println(subList); }  }  
}

优化说明:
使用 subList: 替换 stream 操作为 list.subList(),可以直接获取指定范围的子列表,这样可以减少流的创建和操作的开销。
计算页数: 使用 Math.ceil 来计算总页数,避免了不必要的无限循环。
合理计算结束索引: 使用 Math.min 确保结束索引不会超过列表的大小,从而避免了 IndexOutOfBoundsException。
这样优化后的代码既简洁又高效,适合处理大规模数据的分页处理。

第二种情况:不用获取总记录数,直接分页查询(一页一页的处理)

int pageNum=0;
int pageSize=5;
List<String> currentPageList;
do {//数据库分页查询currentPageList = mapper.selectByPage(pageNum * pageSize, pageSize);if (!currentPageList.isEmpty()) {System.out.println(currentPageList);pageNum++;}
} while (!currentPageList.isEmpty());
http://www.lryc.cn/news/416092.html

相关文章:

  • <数据集>电梯内人车识别数据集<目标检测>
  • 二百五十三、OceanBase——Linux上安装OceanBase数据库(三):OBD页面上部署OceanBase数据库
  • Redis应用笔记
  • html实现好看的塔罗牌、十二星座运势网站源码
  • 万字长文带你入门shell编程(超详细)
  • 音质提升秘籍:专业音频剪辑软件汇总
  • idea配置
  • 将 WinForms 中的 Panel 替换为 WPF 的 WindowsFormsHost 元素
  • C++ ---- vector的底层原理剖析及其实现
  • 跑酷视频素材去哪里下载?哪里有跑酷游戏视频素材?
  • Centos 7配置问题
  • 浮动IP(Floating IP)计费;OpenStack算力共享;OpenStack实现资源虚拟化;算力调度策略
  • Android 源码单独编译Settings模块
  • 虚拟机类加载机制
  • Google Earth Engine(GEE)——逐月筛选影像,并给影像集合添加新的属性
  • 如何从智联招聘网站快速抓取职位详情?两大技巧揭秘
  • C#知识|ini文件操作
  • Linux系统学习之路
  • DNS介绍与部署-Day 01
  • python 图片爬虫记录
  • 本地安装Llama3.1与LobeChat可视化UI界面并实现远程访问大模型实战
  • MSF回弹木马在Ubuntu中测试
  • 大数据等保测评
  • CSS对元素的分类
  • 力扣第五十四题——螺旋矩阵
  • 中创算力:以知识产权转化运用促进高质量发展
  • C语言9~10 DAY(合集)
  • 【Kubernetes】应用的部署(一):金丝雀部署
  • 1.面试准备篇
  • Spring: try-catch 是否还会回滚