当前位置: 首页 > 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。
这样优化后的代码既简洁又高效,适合处理大规模数据的分页处理。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 32-《蝴蝶兰》
  • STM32 驱动直流无刷电机(BLDC)发声
  • 使用Python编写文件重复检查器
  • ffmpeg-cavs识别广电流
  • OpenAI 取消为 ChatGPT 加水印计划,用户反应成关键因素|TodayAI
  • 1. protobuf学习
  • go语言flag库学习
  • 一个是生产打包的时候, 一个是本地测试启动的时候,maven如何配置?
  • 天地图按地名搜索+openlayer+vue3
  • 如何在IDEA上使用JDBC编程【保姆级教程】
  • 力扣第五十三题——最大子数组和
  • 如何开始学习Swift编程?
  • MySQL 实战 45 讲(01-05)
  • C# udp通信测试助手
  • 【数据分享】2024最新安徽省镇级行政区划矢量shp
  • CAP 一致性协议及应用解析
  • centos安装java运行环境jdk+tomcat
  • conda常用的命令
  • extract-text-webpack-plugin用法
  • go append函数以及写入
  • Gradle 5.0 正式版发布
  • JavaScript标准库系列——Math对象和Date对象(二)
  • java概述
  • Python 反序列化安全问题(二)
  • Python学习之路13-记分
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • vue--为什么data属性必须是一个函数
  • Vue组件定义
  • 回顾2016
  • 模型微调
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • #pragma once
  • (1)Nginx简介和安装教程
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (办公)springboot配置aop处理请求.
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (二)pulsar安装在独立的docker中,python测试
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (算法)区间调度问题
  • (一)基于IDEA的JAVA基础10
  • (转)Scala的“=”符号简介
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • ***利用Ms05002溢出找“肉鸡
  • *上位机的定义
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Core跨平台微服务学习资源
  • .NET 读取 JSON格式的数据
  • .net 托管代码与非托管代码