java分段加载数据,循环和递归两种方式
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; } }
好了,效果图就不给了.
2015年10月-2023年6月 总计7年.
所有总计:7年.
我是唯物唯心二元论的,暂时主学法语.
所有总计:7年.
我是唯物唯心二元论的,暂时主学法语.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步