package org.jimmy.autosearch2019.test;

import java.util.ArrayList;

public class Test20190328 {

    private static final ArrayList<String> allList = new ArrayList<String>();

    static {
for(int i = 0; i < 1000; i++) {
allList.add("test000000" + i);
}
} /**
* @author ラピスラズリ(Dawn)
* @date 2019年3月28日 下午2:16:57
* @detail
*/
public static void main(String[] args) {
System.out.println("循环方式每次获取10个对象:");
ArrayList<String> list = getAllList(0, 10);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("循环方式每次获取100个对象:");
list = getAllList(0, 100);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("循环方式每次获取1000个对象:");
list = getAllList(0, 100);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("递归方式每次获取10个对象:");
list = new ArrayList<String>();
list = getAllList(0, 10, list);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("递归方式每次获取100个对象:");
list = new ArrayList<String>();
list = getAllList(0, 100, list);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("递归方式每次获取1000个对象:");
list = new ArrayList<String>();
list = getAllList(0, 1000, list);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
} /**
* @author ラピスラズリ(Dawn)
* @date 2019年3月28日 上午11:07:50
* @detail 分段获取集合数据,pageIndex初始值为0,每次pageSize条,循环方式
*/
public static ArrayList<String> getAllList(int pageIndex, int pageSize) {
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> currentList = new ArrayList<String>();
while((currentList = getStrList(pageIndex, pageSize)).size() != 0){
list.addAll(currentList);
pageIndex++;
}
return list;
} /**
* @author ラピスラズリ(Dawn)
* @date 2019年3月28日 下午2:24:52
* @detail 递归方式
*/
public static ArrayList<String> getAllList(int pageIndex, int pageSize, ArrayList<String> list) {
ArrayList<String> currentList = getStrList(pageIndex, pageSize);
if(currentList != null && currentList.size() > 0) {
list.addAll(currentList);
pageIndex++;
return getAllList(pageIndex, pageSize, list);
}else {
return list;
}
} /**
* @author ラピスラズリ(Dawn)
* @date 2019年3月28日 下午2:13:09
* @detail pageIndex初始值为0
*/
public static ArrayList<String> getStrList(int pageIndex, int pageSize) {
ArrayList<String> resultList = new ArrayList<String>();
int beginIndex = pageIndex * pageSize;
int endIndex = (pageIndex + 1) * pageSize - 1;
if(endIndex > allList.size() - 1) {
endIndex = allList.size() - 1;
}
for(int i = beginIndex; i <= endIndex; i++) {
String currentStr = allList.get(i);
resultList.add(currentStr);
}
return resultList;
} }

好了,效果图就不给了.

java分段加载数据,循环和递归两种方式的更多相关文章

  1. Java导出数据为EXCEL的两种方式JXL和POI

    JXL和POI导出数据方式的比较 POI支持excel2003和2007,而jxl只支持excel2003. 下面为测试代码: public class TestCondition { /** * 生 ...

  2. C#统计给定的文本中字符出现的次数,使用循环和递归两种方法

    前几天看了一个.net程序员面试题目,题目是”统计给定的文本中字符出现的次数,使用循环和递归两种方法“. 下面是我对这个题目的解法: 1.使用循环: /// <summary> /// 使 ...

  3. python中字典的循环遍历的两种方式

    开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python ...

  4. 遍历Map集合:java.util.Map.Entry、KeySet两种方式

    遍历Map集合的两种方式: 1.用KeySet Map.keySet(),返回一个存放所有key的set集合,通过遍历集合,根据key值取出所有的value值. Map<String,Strin ...

  5. Java并发--线程间协作的两种方式:wait、notify、notifyAll和Condition

    在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界 ...

  6. Android提交数据到服务器的两种方式四种方法

    本帖最后由 yanghe123 于 2012-6-7 09:58 编辑 Android应用开发中,会经常要提交数据到服务器和从服务器得到数据,本文主要是给出了利用http协议采用HttpClient方 ...

  7. python利用mongodb上传图片数据 : GridFS 与 bson两种方式

    利用mongodb保存图片通常有两种方法,一种是将图片数据转化为二进制作为字典的键值对进行保存,另一种是利用mongodb提供的GridFS进行保存,两者各有利弊.性能方面的优劣未曾测试,无法进行评价 ...

  8. mysql导出数据到excel的两种方式

    使用第一种方式如果数据中有换行符的话会自动换行,但使用第二种方式就不会出现这种效果了.两种方式自己选择哈 1:select * from into outfile 'c:/Users/a.xls' t ...

  9. 1.java多线程_实现线程的两种方式

    1.java多线程基本知识 1.1.进程介绍 不管是我们开发的应用程序,还是我们运行的其他的应用程序,都需要先把程序安装在本地的硬盘上.然后找到这个程序的启动文件, 启动程序的时候,其实是电脑把当前的 ...

随机推荐

  1. JavaScript-Tool:jquery.jsprint.js

    ylbtech-JavaScript-Tool:jquery.jsprint.js 一个通过单击页面按钮,便实现页面打印的jQuery插件jqprint. 1.返回顶部 1. 插件描述:一个通过单击页 ...

  2. lnmp-详细编译安装步骤

    CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14 一.配置防火墙,开启80端口.3306端口 CentOS 7.0默认使用的是firewall作为防火墙,这 ...

  3. Struts2基本使用

    Struts2:本质servlet 1.接受页面参数 a.使用原生的ServletAPI接受(不推荐) request.getParameter(name) 获取元素request方式: --Http ...

  4. CocoaPods(第三方类库管理工具)

    iOS安装CocoaPods详细过程  一.简介 什么是CocoaPods CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods” ...

  5. hdoj5387【模拟】

    题意: 略: 思路: 把所有的角度按照分母的形式写,中间不要约,不要除...(然后我就wa了),本来是想保证结果的正确性,最后会造成约好以后分子很大..>360°: /* 这个案例不错,妈的,随 ...

  6. 安全性测试入门 (三):CSRF 跨站请求伪造攻击和防御

    本篇继续对于安全性测试话题,结合DVWA进行研习. CSRF(Cross-site request forgery):跨站请求伪造 1. 跨站请求伪造攻击 CSRF则通过伪装成受信任用户的请求来利用受 ...

  7. pip查看安装包的可安装版本

    不需要下载或者安装任何其他软件包,你可以指定一个高得离谱的版本号( 不可能有实际安装候选),并且可用的版本将被打印: pip install scrapy==122222 得到信息后指定版本就好了 p ...

  8. Music in Car CodeForces - 746F

    Music in Car CodeForces - 746F 题意很难懂啊... 题意:http://blog.csdn.net/a838502647/article/details/74831793 ...

  9. Zernike矩之图像重建(附源码)

    源码下载 参考: [1] Teague M R. Image analysis via the general theory of moments[J]. JOSA, 1980, 70(8): 920 ...

  10. K-th Number 线段树的区间第K大

    http://poj.org/problem?id=2104 由于这题的时间限制不紧,所以用线段树水一水. 每个节点保存的是一个数组. 就是对应区间排好序的数组. 建树的时间复杂度需要nlogn 然后 ...