小弟现在遇到一个条件过滤问题。请前辈指导
通过前台传过来的参数(Map类型)。比如A=1,B=2,C=3,D=4。然后通过这些参数来过滤后台查询出来的数据。
为了达到通用的效果。所以我用String数组来保存这些参数的key,然后过滤。但是现在写的这个样子只能判断一个条件,只要一个条件符合就会将map添加到List中。不能四个条件同时判断都成立后才将map添加到List。请前辈指导怎么样能让这个方法变成通用。不管我传几个参数。都判断非空后将这些参数当做条件来过滤数据。代码如下:
[code="java"]
String str[]={ "A", "B", "C", "D" };
//过滤缓存数据 str为String数组,CacheKey为缓存key,params为前台传来的map
List> datas = CacheDataFilter.cacheDataFilter(str,"cacheKey",params);
[/code]
[code="java"]
/**
* 过滤缓存数据
*
* @param str
* 要过滤的数组
* @param cacheKey
* 缓存key
* @param params
* 前台传来的map 将要过滤的key存入String数组。先判断是否存在然后循环和缓存数据中的key比较
* @return
*/
public static List> cacheDataFilter(String[] str,
String cacheKey, Map params) {
// 返回的map集合
List> mapList = new ArrayList>();
// 获得缓存中存放的数据
List> datas= (List>) CacheForData
.getCacheData().getData(cacheKey, null);
//如果查询数据为空,直接返回
if(datas==null)
{
return datas;
}
// 循环过滤
for (Map map : datas) {
boolean flag = true;
//循环String数组中的参数
for (String s : str) {
//判断客户端传入参数和缓存取出来的数据是否为空
if (flag && params.get(s) != null && map.get(s)!=null) {
//判断客户端传入参数和缓存取出来value是否一样,不一样赋false跳出
if (!((String) map.get(s)).contains((String) params.get(s))) {
flag = false;
break;
}
}
//flag==true则将map添加到list
if (flag) {
mapList.add(map);
}
}
}
return mapList;
}
[/code]
数据过滤问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- wks1986 2011-08-14 15:22关注
[code="java"] for (Map map : datas) {
boolean flag = true;
//循环String数组中的参数
for (String s : str) {
//判断客户端传入参数和缓存取出来的数据是否为空
if (flag && params.get(s) != null && map.get(s)!=null) {
//判断客户端传入参数和缓存取出来value是否一样,不一样赋false跳出
if (!((String) map.get(s)).contains((String) params.get(s))) {
flag = false;
break;
}
}- //flag==true则将map添加到list
- if (flag) {
- mapList.add(map);
- }
}
- if (flag) {
- mapList.add(map);
} } [/code]
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 - //flag==true则将map添加到list
悬赏问题
- ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
- ¥15 DruidDataSource一直closing
- ¥20 气象站点数据求取中~
- ¥15 如何获取APP内弹出的网址链接
- ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
- ¥50 STM32单片机传感器读取错误
- ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
- ¥15 (关键词-阻抗匹配,HFSS,RFID标签)
- ¥50 sft下载大文阻塞卡死
- ¥15 机器人轨迹规划相关问题