代码记录(需求:根据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. sql的九个常用语句是什么

    一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数 ...

  2. 学习。NET三周心得

    目前为止 学习.NET已经快一个月了,有刚开始的不懂,到中途懵懂.再到现在的简懂 ,感觉自己迷了好多天,学习程序员跟学其他的程序还不同,其他的有固定格式,而.NET则固定很少 ,一直在用方法连接前后台 ...

  3. sudo 命令报 unable to resolve host 导致反应速度变慢

    1 分析 1.1 字面分析,不能解析主机 1.2 由于修改了本地主机名称所导致 2 解决 2.1 打开 /etc/hosts 2.2 主机名称指向,如你的主机名为 debian 2.3  127.0. ...

  4. jQuery相关方法3----动画相关

    一.显示和隐藏 show(参数1,参数2)方法和hide(参数1,参数2)方法,动画效果显示和隐藏 参数1是时间,单位毫秒(1000毫秒=1秒),也可以是 "slow"" ...

  5. leetcode解题报告(14):Max Consecutive Ones

    描述 Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: ...

  6. 静态blog的免费托管部署、加域名与搜索优化(SEO)

    本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/hugo_blog_host_and_seo 给博客加个域名准备长 ...

  7. 在Spring中读取properties文件

    1.配置文件(*.properties)往往通过以下方式注册在Spring IOC中. <!-- JDBC配置 --> <context:property-placeholder l ...

  8. 激活 phpstorm2019.1 win10

    首先添加以下内容到c:\windows\system32\drivers\etc\hosts 文件 0.0.0.0 account.jetbrains.com 0.0.0.0 www.jetbrain ...

  9. Redis删除相同前缀的key

          如何优雅地删除Redis set集合中前缀相同的key?       Redis中有删除单条数据的命令DEL,却没有批量删除特定前缀key的指令,但我们经常遇到需要根据前缀来删除的业务场景 ...

  10. 说出Servlet的生命周期,并说出Servlet和CGI的区别。

    说出Servlet的生命周期,并说出Servlet和CGI的区别. 山治ZHrx5 | 浏览 1377 次 推荐于2016-09-16 22:39:19 最佳答案 Servlet的生命周期分为5个阶段 ...