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 );

}












目录
相关文章
|
测试技术 索引
Elasticsearch search after分页检索案例
Elasticsearch search after分页检索案例分享 The best elasticsearch highlevel java rest api-----bboss 1.准备工作 参考文档《高性能elasticsearch ORM开发库使用介绍》导入和配置es客户端 2.
4911 0
|
前端开发 API Go
golang ES From size 分页查询 和 Scroll 分页查询 demo
golang ES From size 分页查询 和 Scroll 分页查询 demo
|
SQL 前端开发
stream排序导致pageHelper分页失效处理
现有一查询会员上课记录的需求,要求按照上课时间进行倒序排列,考虑到后期数据量很多,使用逻辑层进行排序,但是前端小姐姐反应说查询的总记录数不正确.测试库中每页查询20条,实际所有数据总共37条,但是返回的总记录数竟然是20条,说明pageHelper分页失效.
stream排序导致pageHelper分页失效处理
|
关系型数据库 MySQL
ES复杂查询-结果过滤, 排序,分页
ES复杂查询-结果过滤, 排序,分页
|
Java 安全 NoSQL
Guava中针对集合的 filter和过滤功能
Guava中针对集合的 filter和过滤功能
2568 0
|
SQL Java
Hibernae的Criteria 查询(十七)
Hibernae的Criteria 查询(十七)
132 0
|
小程序 Windows
SAP C4C OData服务的filter,客户端分页和排序的使用方式
假设系统里已经有许多的Lead历史数据,而我们正在进行的微信小程序和C4C集成的项目里,又创建了许多新的Lead数据。如何将这些新的在微信小程序里调用OData服务创建的Lead数据同老的历史数据做区分呢? (1) 在C4C Sales Lead页面里,通过Source字段来标明Lead的来源。
SAP C4C OData服务的filter,客户端分页和排序的使用方式
|
存储 数据采集 编解码
fingerprint filter 插件——Elasticsearch 去重必备利器
1、实战问题 问题1:es 中 scroll 游标不能与 collapse 共用,有什么办法可以实现 collapse 的效果? 问题2:采集互联网数据有重复数据写入 Elasticsearch,如何去重后放到另外索引?
683 0
fingerprint filter 插件——Elasticsearch 去重必备利器
|
消息中间件 缓存 算法
Java8 快速实现List转map 、分组、过滤等操作
利用java8新特性,可以用简洁高效的代码来实现一些数据处理。
|
SQL 算法
分页解决方案 之 QuickPager的使用方法(URL分页、自动获取数据)
      适用范围:网站前台页面 等,从关系型数据库里提取数据,愿意使用Pager_SQL、DataAccessLibrary的情况。       优点:使用URL的方式,对于SEO比较友好。
934 0