com.google.common.collect.Iterables过滤和分页实现

简介: 过滤和分页实现
 

使用Gradle: com.google.guava:guava:16.0.1 jar文件

通过com.google.common.collect.Iterables和com.google.common.base.Predicate功能实现简单条件查询过滤







完整代码:


/**

* query monitor zknodes list
* @param currentPageNum
* @param pageSize
* @param nodeName
* @return
*/
@RequestMapping (value = "/list" , method = RequestMethod. GET )
public ResponseEntity<PageableRetVO<List<MonitorNodesParam>>> getMonitorZnodeList(
@RequestParam (value = "currentPageNum" , required = false ) Integer currentPageNum,
@RequestParam (value = "pageSize" , required = false ) Integer pageSize,
@RequestParam (value = "nodeName" , required = false ) String nodeName){

final String nodeNameQry = nodeName;
PageableRetVO<List<MonitorNodesParam>> pageableRetVO =
new PageableRetVO<>();
try {
createConnectZk();
List<MonitorNodesParam> znodes =
zkFacade .readConfigFromZk();
// 1.filter
List<MonitorNodesParam> filteredList = Lists. newArrayList ();
if (StringUtils. isNotEmpty (nodeNameQry)){
Iterable<MonitorNodesParam> filteredIter = Iterables.
filter (znodes, new Predicate<MonitorNodesParam>() {
@Override
public boolean apply(MonitorNodesParam input) {
if (StringUtils. isNotEmpty ( nodeNameQry ) && input.getNodeName().contains( nodeNameQry )) {
return true ;
}
else {
return false ;
}
}
});
for (MonitorNodesParam filtered:filteredIter){
filteredList.add(filtered);
}
}
else {
filteredList = znodes;
}

// 2.page
int totalCount = filteredList.size();
pageableRetVO.setTotalCount(totalCount);
pageableRetVO.setPageNum((currentPageNum==
null ? 0 :currentPageNum) > 0 ? currentPageNum : 1 );
pageableRetVO.setPageSize((pageSize ==
null ? 0 : pageSize) <= 0 ? 20 : pageSize);
int totalPagesNum = BaseUtils. getPagesNum (filteredList.size(), pageableRetVO.getPageSize());
if (pageableRetVO.getPageNum()<=totalPagesNum){
filteredList = filteredList.subList((pageableRetVO.getPageNum()-
1 ) * pageableRetVO.getPageSize(), Math. min (filteredList.size(),(pageableRetVO.getPageNum())*pageableRetVO.getPageSize()));
pageableRetVO.setList(filteredList);
}
else {
pageableRetVO.setList(
new ArrayList<MonitorNodesParam>());
}
pageableRetVO.setRetCode(
0 );
}
catch (Exception e) {
logger .error(e.getMessage());
pageableRetVO.setRetCode(-
1 );
pageableRetVO.setErrorMsg(e.getMessage());
}
return new ResponseEntity<>(pageableRetVO, HttpStatus. OK );

}












目录
相关文章
|
存储 负载均衡 搜索推荐
Google搜索为什么不能无限分页?
这是一个很有意思却很少有人注意的问题。 当我用Google搜索`MySQL`这个关键词的时候,Google只提供了`13`页的搜索结果,我通过修改url的分页参数试图搜索第`14`页数据,结果出现了以下的错误提示:
Google搜索为什么不能无限分页?
|
XML Java 数据格式
认真做 flex + spring + blazeDS + google app JDO 分页.每次查询总数.
认真做 flex + spring + blazeDS + google app JDO 分页.每次查询总数. 最近被 BlazeDS 折腾的不行了.. 都有点想换成 e4x 格式的 xml 那样来的比较简单.但是终没有放弃.收获还是不错的. 首先是在 explore 里面 使用 SWFLoader 做动态加载. 根据不同的菜单 显示不同
1020 0
|
8月前
|
数据可视化 定位技术 Sentinel
如何用Google Earth Engine快速、大量下载遥感影像数据?
【2月更文挑战第9天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载指定时间范围、空间范围的遥感影像数据(包括Landsat、Sentinel等)的方法~
2779 1
如何用Google Earth Engine快速、大量下载遥感影像数据?
|
8月前
|
编解码 人工智能 算法
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
106 0
|
8月前
|
编解码 人工智能 数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
172 0
|
8月前
|
编解码
Open Google Earth Engine(OEEL)——matrixUnit(...)中产生常量影像
Open Google Earth Engine(OEEL)——matrixUnit(...)中产生常量影像
89 0
|
8月前
Google Earth Engine(GEE)——导出指定区域的河流和流域范围
Google Earth Engine(GEE)——导出指定区域的河流和流域范围
315 0
|
8月前
|
传感器 编解码 数据处理
Open Google Earth Engine(OEEL)——哨兵1号数据的黑边去除功能附链接和代码
Open Google Earth Engine(OEEL)——哨兵1号数据的黑边去除功能附链接和代码
153 0
|
8月前
Google Earth Engine(GEE)——当加载图表的时候出现错误No features contain non-null values of “system:time_start“.
Google Earth Engine(GEE)——当加载图表的时候出现错误No features contain non-null values of “system:time_start“.
144 0
|
8月前
|
编解码 定位技术
Google Earth Engine(GEE)——导出后的影像像素不同于原始Landsat影像的分辨率(投影差异)
Google Earth Engine(GEE)——导出后的影像像素不同于原始Landsat影像的分辨率(投影差异)
239 0

热门文章

最新文章

下一篇
开通oss服务