根据start和limit从已有的数据列表中获取从start开始的limit个数据
代码记录(需求:根据start和limit从已有的数据列表中获取从start开始的limit个数据)
已有的数据列表:这个数据列表是经过处理的,可能是在SQL查询时无法处理的如多条件排序,而排序条件需要重新计算才能得到。
实体类Store.java
package com.zhipengs.work.test; import java.io.Serializable; /**
* 实体类Store
*
* @author zhipengs
*/
public class Store implements Serializable {
private static final long serialVersionUID = 8799004943860173845L;
private Long storeId;
private String storeName;
private String longitude;
private String latitude;
private String storeLogo; public Store(Long storeId, String storeName, String longitude,
String latitude, String storeLogo) {
super();
this.storeId = storeId;
this.storeName = storeName;
this.longitude = longitude;
this.latitude = latitude;
this.storeLogo = storeLogo;
} public Long getStoreId() {
return storeId;
} public void setStoreId(Long storeId) {
this.storeId = storeId;
} public String getStoreName() {
return storeName;
} public void setStoreName(String storeName) {
this.storeName = storeName;
} public String getLongitude() {
return longitude;
} public void setLongitude(String longitude) {
this.longitude = longitude;
} public String getLatitude() {
return latitude;
} public void setLatitude(String latitude) {
this.latitude = latitude;
} public String getStoreLogo() {
return storeLogo;
} public void setStoreLogo(String storeLogo) {
this.storeLogo = storeLogo;
} @Override
public String toString() {
return "Store [storeId=" + storeId + ", storeName=" + storeName
+ ", longitude=" + longitude + ", latitude=" + latitude
+ ", storeLogo=" + storeLogo + "]";
} }
工具类DataStartLimitUtil.java
package com.zhipengs.work.test; import java.util.ArrayList;
import java.util.List;
/**
* 写成工具类DataStartLimitUtil
*
* @author zhipengs
*/
public class DataStartLimitUtil { public static List<Object> getLimitSampleStores(Integer start,
Integer limit, List<Object> data) {
System.out.println("start=" + start + " limit=" + limit);
List<Object> dataReturn = new ArrayList<Object>();
// 如果data为null,直接返回或者获取数据的起始位置大于等于data的大小则返回null
if (null == data || data.size() <= start) {
return null;
}
// 计算需要取data数据的最后一个位置loop,start为起始位置,共取limit个
int loop = start + limit;
// 如果data的大小大于等于获取数据的其实位置的同时又小于需要取得data数据的最后一个位置数loop,则将loop重置为data的大小
if (data.size() >= start && data.size() < loop) {
loop = data.size();
}
// 循环遍历获取data中第start个位置到第loop个位置的数据,放入新的列表中并返回
for (int i = start; i < loop; i++) {
dataReturn.add(data.get(i));
}
return dataReturn;
}
}
测试类MainTest.java
package com.zhipengs.work.test; import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* 测试
*
* @author zhipengs
*/
public class MainTest {
@SuppressWarnings("unused")
public static void main(String[] args) {
List<Object> storeRerurnList = null;
List<Object> storeList = null;
Store store = null; // storeList为null
storeRerurnList = DataStartLimitUtil.getLimitSampleStores(0, 21, storeList);
System.out.println("storeList为null,返回的数据列表:"+storeRerurnList);
System.out.println("------------------------------------------------------"); // 往storeList中存入20条数据
storeList = new ArrayList<Object>();
for (int i = 0; i < 20; i++) {
store = new Store((long) i+1, "_store_", "113.85786457474","23.7635746576", "mobile/"
+ Math.abs(new Random().nextInt()) + ".jpg");
storeList.add(store);
} // 获取数据的起始位置大于等于storeList的size
storeRerurnList = DataStartLimitUtil.getLimitSampleStores(20, 1, storeList);
System.out.println("获取数据的起始位置大于等于storeList的size,返回的数据列表:"+storeRerurnList);
System.out.println("------------------------------------------------------"); // storeList的size大于等于获取数据的起始位置的同时又小于需要取得data数据的最后一个位置数
storeRerurnList = DataStartLimitUtil.getLimitSampleStores(0, 25, storeList);
System.out.println("storeList有20条数据,从0取25条,storeRerurnList.size(): " + storeRerurnList.size());
System.out.println("storeList有20条数据,从0取25条,第一条"+storeRerurnList.get(0));
System.out.println("------------------------------------------------------"); storeRerurnList = DataStartLimitUtil.getLimitSampleStores(5, 25, storeList);
System.out.println("storeList有20条数据,从5取25条,storeRerurnList.size(): " + storeRerurnList.size());
System.out.println("storeList有20条数据,从5取25条,第一条"+storeRerurnList.get(0)); // 正常获取数据
System.out.println("---------------------循环获取所有数据---------------------");
for(int i=0;i<25;i+=5) {
storeRerurnList = DataStartLimitUtil.getLimitSampleStores(i, 5, storeList);
if(null == storeRerurnList) {
System.out.println(storeRerurnList);
} else {
System.out.println("storeList有20条数据,从"+i+"取5条,storeRerurnList.size(): " + storeRerurnList.size());
System.out.println("storeList有20条数据,从"+i+"取5条,第一条"+storeRerurnList.get(0));
System.out.println("------------------------------------------------------");
} } /*
* for(Object o : storeRerurnList) { if(o instanceof Store) {
* System.out.println((Store)o); } }
*/ }
}
测试结果:
start=0 limit=21
storeList为null,返回的数据列表:null
------------------------------------------------------
start=20 limit=1
获取数据的起始位置大于等于storeList的size,返回的数据列表:null
------------------------------------------------------
start=0 limit=25
storeList有20条数据,从0取25条,storeRerurnList.size(): 20
storeList有20条数据,从0取25条,第一条Store [storeId=1, storeName=_store_, longitude=113.85786457474, latitude=23.7635746576, storeLogo=mobile/1455388787.jpg]
------------------------------------------------------
start=5 limit=25
storeList有20条数据,从5取25条,storeRerurnList.size(): 15
storeList有20条数据,从5取25条,第一条Store [storeId=6, storeName=_store_, longitude=113.85786457474, latitude=23.7635746576, storeLogo=mobile/335472957.jpg]
---------------------循环获取所有数据---------------------
start=0 limit=5
storeList有20条数据,从0取5条,storeRerurnList.size(): 5
storeList有20条数据,从0取5条,第一条Store [storeId=1, storeName=_store_, longitude=113.85786457474, latitude=23.7635746576, storeLogo=mobile/1455388787.jpg]
------------------------------------------------------
start=5 limit=5
storeList有20条数据,从5取5条,storeRerurnList.size(): 5
storeList有20条数据,从5取5条,第一条Store [storeId=6, storeName=_store_, longitude=113.85786457474, latitude=23.7635746576, storeLogo=mobile/335472957.jpg]
------------------------------------------------------
start=10 limit=5
storeList有20条数据,从10取5条,storeRerurnList.size(): 5
storeList有20条数据,从10取5条,第一条Store [storeId=11, storeName=_store_, longitude=113.85786457474, latitude=23.7635746576, storeLogo=mobile/1985193589.jpg]
------------------------------------------------------
start=15 limit=5
storeList有20条数据,从15取5条,storeRerurnList.size(): 5
storeList有20条数据,从15取5条,第一条Store [storeId=16, storeName=_store_, longitude=113.85786457474, latitude=23.7635746576, storeLogo=mobile/1439772159.jpg]
------------------------------------------------------
start=20 limit=5
null
根据start和limit从已有的数据列表中获取从start开始的limit个数据的更多相关文章
- MySQL中获取天、周、月等数据
MySQL中获取天.周.月等数据 1.今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 2.昨天 SELECT * FROM 表名 ...
- c# gridview数据列表中NamingContainer容器的用法
当在前台我们绑定了一个linkbutton型的按钮,并触发了onserverclick="delBook_Server"的服务端事件,前台代码如下: <asp:Templat ...
- 数据科学中的R和Python: 30个免费数据资源网站
1 政府数据 Data.gov:这是美国政府收集的数据资源.声称有多达40万个数据集,包括了原始数据和地理空间格式数据.使用这些数据集需要注意的是:你要进行必要的清理工作,因为许多数据是字符型的或是有 ...
- vue 在已有的购买列表中(数据库返回的数据)修改商品数量
连续加班一个月 连续通宵三天 到最后还是少了一个功能 心碎 简介:一个生成好的商品列表(数据库返回的数据) 首先拿到我们需要渲染的数组 在data中定义 我是在测试的时候 直接写了两条数据 下面开始 ...
- Winfrom treeview 如何从多个数据表中获取数据动态生成
本文转载:http://www.cnblogs.com/VincentLuo/archive/2008/03/29/1128987.html 在 汪洋怡舟的这篇文章中[http://www.cnblo ...
- 【OData】使用Odata获取数据之后再次获取可能得不到最新的数据问题记录
工作上遇到个问题是关于系统后台数据库更新了某数据后, 前台界面刷新显示的不是最新的数据.但是大约10分后再次刷新就能显示新的数据,或者重启IIS等web server host. 最开始认为可能是因为 ...
- 在 easyui中获取form表单中所有提交的数据 拼接到table列表中
form表单===== <!-- 并用药品填写信息弹框 --> <div id="usingProdctMsgDiv" style="display: ...
- 获取某个数据所在数据列表中的行数 mysql
select * from (select @rownum := @rownum+1 as rownum,goods_idfrom table_goods, (select @rownum:=0) t ...
- RadioButton在数据列表中实现单选功能
在服务器端动态生成的name总是不断变化,故需手动实现单选 ; <html xmlns="http://www.w3.org/1999/xhtml"> <head ...
随机推荐
- JAVA的变量,数据类型与运算符
1. 变量 计算机处理数据,变量被用来存储处理的数据,之所以叫做变量因为你可以改变存储的值.更确切的说,一个变量指向着一块存储特定类型值的地址,换句话说,一个变量有名称.类型和值.一个变量有一个名称, ...
- SpringMVC拦截器及多拦截器时的执行顺序
本文链接:https://blog.csdn.net/itcats_cn/article/details/80371639拦截器的配置步骤 springmvc.xml中配置多个拦截器配置自定义拦截器并 ...
- Greenplum 执行计划之广播与重分布
关联数据在不同节点上,对于普通关系型数据库来说,是无法进行连接的.关联的数据需要通过网络流入到一个节点中进行计算,这样就需要发生数据迁移.数据迁移有广播和重分布两种.在GP中,每一个广播或重分布会产生 ...
- leetcode解题报告(23):Pascal's Triangle
描述 Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, R ...
- Codeforces Round #574 (Div. 2)
目录 Contest Info Solutions A. Drinks Choosing B. Sport Mafia C. Basketball Exercise D1. Submarine in ...
- 点云赋值 PointCloudT::Ptr 运行时崩溃
PointCloudT::Ptr cloud; cloud.reset(new PointCloudT); cloud->points.resize(500);for(int index =0; ...
- Comet OJ - Contest #7
传送门 \(A\) 咕咕咕 int main(){ for(scanf("%d",&T);T;--T){ scanf("%d%d",&l,&am ...
- 数据结构实验之查找四:二分查找(SDUT 3376)
#include <stdio.h> #include <string.h> #include <stdlib.h> int a[1000005]; int fin ...
- ie 使用window.open页面报错
window.open(url)打开新页面是如果要通过地址栏来传参要注意 var qt = ""; qt += "&teachMaterialDealInfo.b ...
- ORACLE批量导入图片到BLOB字段
要插入图片的表不是固定的,而且是批量插入很多张,还要考虑到因为图片的文件名错误,修改后要再次插入,此时应避免已经插入的重复执行操作, 浪费时间. 所以就选择先用一张临时表来暂时保存从文件系统读取的照片 ...