代码记录(需求:根据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个数据的更多相关文章

  1. MySQL中获取天、周、月等数据

    MySQL中获取天.周.月等数据 1.今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 2.昨天 SELECT * FROM 表名 ...

  2. c# gridview数据列表中NamingContainer容器的用法

    当在前台我们绑定了一个linkbutton型的按钮,并触发了onserverclick="delBook_Server"的服务端事件,前台代码如下: <asp:Templat ...

  3. 数据科学中的R和Python: 30个免费数据资源网站

    1 政府数据 Data.gov:这是美国政府收集的数据资源.声称有多达40万个数据集,包括了原始数据和地理空间格式数据.使用这些数据集需要注意的是:你要进行必要的清理工作,因为许多数据是字符型的或是有 ...

  4. vue 在已有的购买列表中(数据库返回的数据)修改商品数量

    连续加班一个月  连续通宵三天 到最后还是少了一个功能 心碎 简介:一个生成好的商品列表(数据库返回的数据) 首先拿到我们需要渲染的数组 在data中定义 我是在测试的时候 直接写了两条数据 下面开始 ...

  5. Winfrom treeview 如何从多个数据表中获取数据动态生成

    本文转载:http://www.cnblogs.com/VincentLuo/archive/2008/03/29/1128987.html 在 汪洋怡舟的这篇文章中[http://www.cnblo ...

  6. 【OData】使用Odata获取数据之后再次获取可能得不到最新的数据问题记录

    工作上遇到个问题是关于系统后台数据库更新了某数据后, 前台界面刷新显示的不是最新的数据.但是大约10分后再次刷新就能显示新的数据,或者重启IIS等web server host. 最开始认为可能是因为 ...

  7. 在 easyui中获取form表单中所有提交的数据 拼接到table列表中

    form表单===== <!-- 并用药品填写信息弹框 --> <div id="usingProdctMsgDiv" style="display: ...

  8. 获取某个数据所在数据列表中的行数 mysql

    select * from (select @rownum := @rownum+1 as rownum,goods_idfrom table_goods, (select @rownum:=0) t ...

  9. RadioButton在数据列表中实现单选功能

    在服务器端动态生成的name总是不断变化,故需手动实现单选 ; <html xmlns="http://www.w3.org/1999/xhtml"> <head ...

随机推荐

  1. 黑魔法师之门 (magician)-并查集

    题目 经过了 16 个工作日的紧张忙碌,未来的人类终于收集到了足够的能源.然而在与 Violet 星球的战争中,由于 Z 副官的愚蠢,地球的领袖 applepi 被邪恶的黑魔法师 Vani 囚禁在了 ...

  2. sql server 数据类型转换

    --这是显示转换类型,将字符串转成整形SELECT CAST('1' AS int),CONVERT(int,'1')--SqlServer也会隐式转换,如:用字符串乘以一个整形,--整形优先级要大, ...

  3. BZOJ4406 WC2016 论战捆竹竿

    Problem BZOJ Solution 显然是一个同余系最短路问题,转移方案就是所有|S|-border的长度,有 \(O(n)\) 种,暴力跑dijkstra的复杂度为 \(O(n^2\log ...

  4. OpenJudge 1.5.14 人口增长问题

    描述 我国现有x亿人口,按照每年0.1%的增长速度,n年后将有多少人? 输入一行,包含两个整数x和n,分别是人口基数和年数,以单个空格分隔.输出输出最后的人口数,以亿为单位,保留到小数点后四位.1 & ...

  5. 教你如何快速定制 SpringBoot banner

    之前说过如何快速创建SpringBoot项目,不知道的同学可以查看之前的文章 5分钟学会如何创建spring boot项目. 为了让大家脱单,码哥简直费尽心思,今天这个技能或许可以让你脱单! 今天我们 ...

  6. thymeleaf 声明

    <!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring4-4.dtd&qu ...

  7. Mininet系列实验(五):Mininet设置带宽之简单性能测试

    1.实验目的 该实验通过Mininet学习python自定义拓扑实现,可在python脚本文件中设计任意想要的拓扑,简单方便,并通过设置交换机和主机之间链路的带宽.延迟及丢包率,测试主机之间的性能.在 ...

  8. Python 死循环

    while True: try: x=int(input("Please enter a number:")) break except ValueError: print(&qu ...

  9. 安卓打包apk

    打apk包的环境依赖 1.jdk 2.sdk 3.ndk 打apk包的工具 gradle mkdir /usr/local/Android cd /usr/local/Android mkdir sd ...

  10. PHP松散比较与严格比较的区别详解

    在PHP中相等的比较有两种,松散比较和严格比较,当使用松散比较时,如果进行比较的两个操作数类型不同,那么会对操作数进行适当的类型转换,如果转换后的值相同则认为两个操作数相等.而使用严格比较时,如果两个 ...