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. 使用slot分发内容

    为了让组件可以组合,我们需要一种方式来混合父组件的内容与子组件的模板.这个过程被称为 内容分发 使用特殊的<slot>元素作为原始内容的插槽 除非子组件模板包含至少一个<slot&g ...

  2. bzoj1304

    树形dp 题目是要求最深的颜色 先开始觉得设dp[i][0/1/2]表示这个点的状态,然后发现没办法保证该点是最深的点,且dp状态没有实际意义,其实dp[i][0/1]表示当前i的子树颜色为c^1的叶 ...

  3. git只clone仓库中指定子目录

    基于sparse clone变通方法 [root@vm_test backup]# mkdir devops[root@vm_test backup]# cd devops/[root@vm_test ...

  4. oracle报错ORA-01843: not a valid month

    转自:https://www.cnblogs.com/chonghaojie/p/9994625.html 客户端:select * from sys.nls_session_parameters;服 ...

  5. A. Meeting of Old Friends

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  6. 两分钟彻底让你明白Android Activity生命周期(图文)!(转载)

    转自:http://kb.cnblogs.com/page/70125/ 大家好,今天给大家详解一下Android中Activity的生命周期,我在前面也曾经讲过这方面的内容,但是像网上大多数文章一样 ...

  7. Codeforces711C 【DP】

    题意: 有n个点,m种颜色,你要给n个点上没有颜色的点染色.每个点i对应染的颜色j有一个颜料消耗,p[i][j]是点i染成j颜色的花费,你必须保证有k段颜色的点,输出最少花费多少颜料. 还有一个就是本 ...

  8. 洛谷 P1314 聪明的质监员【二分+前缀和】

    真是zz, 题目很显然是二分W,然后判断,我一开始是用线段树维护当前w[i]>W的个数和v(公式就是区间满足要求的个数*满足要求的v的和),然后T成70 后来想到树状数组差分常数或许会小,于是改 ...

  9. Django framework

    1. Django 的内置web server是如何实现的 2. Django 的WSGI是如何实现的 3. Django middle ware是如何实现的 4. Django framework的 ...

  10. [已读]JavaScript面向对象编程指南

    又是一个忽悠人的书名,其实这本书的花了大量内容阐述JS的基础语法,BOM,DOM,事件,ajax(这个和很多js书一样).最后一章则是编程模式与设计模式. 我觉得与面向对象没多大关系,要算的话,pro ...