iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么在Java中实现一个分页遍历功能
  • 318
分享到

怎么在Java中实现一个分页遍历功能

2023-06-06 16:06:18 318人浏览 八月长安
摘要

怎么在Java中实现一个分页遍历功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 数据查询模拟首先mock一个分页获取数据的逻辑,直接随机生成数据,并且控制最多返回三页pub

怎么在Java中实现一个分页遍历功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

数据查询模拟

首先mock一个分页获取数据的逻辑,直接随机生成数据,并且控制最多返回三页

public static int cnt = 0;private static List<String> randStr(int start, int size) {  ++cnt;  if (cnt > 3) {    return Collections.emptyList();  } else if (cnt == 3) {    cnt = 0;    size -= 2;  }  System.out.println("======================= start to gen randList ====================");  List<String> ans = new ArrayList<>(size);  for (int i = 0; i < size; i++) {    ans.add((start + i) + "_" + UUID.randomUUID().toString());  }  return ans;}

2. 基本实现方式

针对这种场景,最常见也是最简单直观的实现方式

  • while死循环

  • 内部遍历

private static void scanByNORMal() {  int start = 0;  int size = 5;  while (true) {    List<String> list = randStr(start, size);    for (String str : list) {      System.out.println(str);    }    if (list.size() < size) {      break;    }    start += list.size();  }}

3. 迭代器实现方式

接下来介绍一种更有意思的方式,借助迭代器的遍历特性来实现,首先自定义一个通用分页迭代器

public static abstract class MyIterator<T> implements Iterator<T> {  private int start = 0;  private int size = 5;  private int currentIndex;  private boolean hasMore = true;  private List<T> list;  public MyIterator() {  }  @Override  public boolean hasNext() {    if (list != null && list.size() > currentIndex) {      return true;    }    // 当前的数据已经加载完毕,尝试加载下一批    if (!hasMore) {      return false;    }    list = load(start, size);    if (list == null || list.isEmpty()) {      // 没有加载到数据,结束      return false;    }    if (list.size() < size) {      // 返回条数小于限制条数,表示还有更多的数据可以加载      hasMore = false;    }    currentIndex = 0;    start += list.size();    return true;  }  @Override  public T next() {    return list.get(currentIndex++);  }  public abstract List<T> load(int start, int size);}

接下来借助上面的迭代器可以比较简单的实现我们的需求了

private static void scanByIterator() {  MyIterator<String> iterator = new MyIterator<String>() {    @Override    public List<String> load(int start, int size) {      return randStr(start, size);    }  };  while (iterator.hasNext()) {    String str = iterator.next();    System.out.println(str);  }}

那么问题来了,上面这种使用方式比前面的优势体现再哪儿呢?

双层循环改为单层循环

接下来接入重点了,在jdk1.8引入了函数方法 + lambda之后,又提供了一个更简洁的使用姿势

public class IteratorTestForJdk18 {  @FunctionalInterface  public interface LoadFunc<T> {    List<T> load(int start, int size);  }  public static class MyIterator<T> implements Iterator<T> {    private int start = 0;    private int size = 5;    private int currentIndex;    private boolean hasMore = true;    private List<T> list;    private LoadFunc<T> loadFunc;    public MyIterator(LoadFunc<T> loadFunc) {      this.loadFunc = loadFunc;    }    @Override    public boolean hasNext() {      if (list != null && list.size() > currentIndex) {        return true;      }      // 当前的数据已经加载完毕,尝试加载下一批      if (!hasMore) {        return false;      }      list = loadFunc.load(start, size);      if (list == null || list.isEmpty()) {        // 没有加载到数据,结束        return false;      }      if (list.size() < size) {        // 返回条数小于限制条数,表示还有更多的数据可以加载        hasMore = false;      }      currentIndex = 0;      start += list.size();      return true;    }    @Override    public T next() {      return list.get(currentIndex++);    }  }}

在jdk1.8及之后的使用姿势,一行代码即可

private static void scanByIteratorInJdk8() {  new MyIterator<>(IteratorTestForJdk18::randStr)    .forEachRemaining(System.out::println);}

看完上述内容,你们掌握怎么在Java中实现一个分页遍历功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 怎么在Java中实现一个分页遍历功能

本文链接: https://www.lsjlt.com/news/247855.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在Java中实现一个分页遍历功能
    怎么在Java中实现一个分页遍历功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 数据查询模拟首先mock一个分页获取数据的逻辑,直接随机生成数据,并且控制最多返回三页pub...
    99+
    2023-06-06
  • 怎么在Java项目中实现一个分页功能
    怎么在Java项目中实现一个分页功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。分页对象public class PageUtils imp...
    99+
    2023-05-31
    java ava 目中
  • 怎么在java中实现一个sleep功能
    这篇文章给大家介绍怎么在java中实现一个sleep功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开...
    99+
    2023-06-14
  • 怎么在Android中实现一个可标记日历功能
    今天就跟大家聊聊有关怎么在Android中实现一个可标记日历功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。DatabaseHelper .java package co...
    99+
    2023-05-31
    android roi %d
  • 使用Django怎么实现一个分页功能
    这篇文章主要为大家详细介绍了使用Django怎么实现一个分页功能,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:创建项目创建APP,添加APP这些就不在多说我们这次重点来看到视图函数下面是路由设置视图函数继承T...
    99+
    2023-06-06
  • 怎么在springboot中利用thymeleaf模板实现一个paginate分页功能
    今天就跟大家聊聊有关怎么在springboot中利用thymeleaf模板实现一个paginate分页功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。pom.xml 加入 ...
    99+
    2023-05-31
    springboot thymeleaf paginate
  • java怎么实现分页功能
    这篇文章主要介绍“java怎么实现分页功能”,在日常操作中,相信很多人在java怎么实现分页功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java怎么实现分页功能”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-03
  • 利用Java怎么实现一个分页查询并显示功能
    本篇文章为大家展示了利用Java怎么实现一个分页查询并显示功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。sql语句大概形式为:select * from table limit 开始索...
    99+
    2023-05-31
    java 分页查询 ava
  • C#中怎么实现一个二叉树遍历算法
    这篇文章给大家介绍C#中怎么实现一个二叉树遍历算法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#算法实现了二叉树的定义,怎么构造一颗已知的二叉树,用几种常规的算法(先序,中序,后序,层次)进行C#二叉树遍历。希望能...
    99+
    2023-06-18
  • Java中怎么实现一个Group功能
    本篇文章为大家展示了Java中怎么实现一个Group功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。接口方法如下:     ...
    99+
    2022-10-18
  • java下一页功能怎么实现
    实现Java下一页功能可以通过以下步骤完成:1. 定义一个变量来表示当前页码,初始值为1。2. 定义一个变量来表示每页显示的数据条数...
    99+
    2023-09-01
    java
  • 怎么在Android应用中利用RecyclerView实现一个分页滚动功能
    怎么在Android应用中利用RecyclerView实现一个分页滚动功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、需求分析最近公司项目要实现一个需求要满足以下功能...
    99+
    2023-05-31
    android recyclerview recycle
  • 使用Ajax怎么实现一个搜索分页功能
    使用Ajax怎么实现一个搜索分页功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是ajaxajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术,可以通...
    99+
    2023-06-08
  • 使用Java怎么实现一个网页截屏功能
    使用Java怎么实现一个网页截屏功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体如下:package awtDemo;import j...
    99+
    2023-05-30
    java
  • 利用java怎么实现一个网页爬虫功能
    利用java怎么实现一个网页爬虫功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。爬虫实现原理网络爬虫基本技术处理网络爬虫是数据采集的一种方法,实际项目开发中,通过爬虫做数...
    99+
    2023-05-31
    java ava
  • 怎么在Java中利用JDBC实现一个事务功能
    本文章向大家介绍怎么在Java中利用JDBC实现一个事务功能,主要包括怎么在Java中利用JDBC实现一个事务功能的使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Java是什么Java是一门面...
    99+
    2023-05-30
  • 怎么在Android中实现一个摇一摇功能
    本篇文章给大家分享的是有关怎么在Android中实现一个摇一摇功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。步骤1:声明一个SensorManager对象步骤2:重写Act...
    99+
    2023-06-14
  • 使用JAVA怎么实现一个红包分发功能
    本篇文章为大家展示了使用JAVA怎么实现一个红包分发功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。代码import java.util.Arrays;import java....
    99+
    2023-06-14
  • 在Spring项目中使用 Hibernate如何实现一个分页功能
    本篇文章给大家分享的是有关在Spring项目中使用 Hibernate如何实现一个分页功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。最关键的是运用Hibernate的que...
    99+
    2023-05-31
    spring hibernate 分页
  • 如何在Android应用中利用ListView实现一个分页功能
    今天就跟大家聊聊有关如何在Android应用中利用ListView实现一个分页功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Android ListView分页简单实现分页,开发...
    99+
    2023-05-31
    android listview roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作