博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Map:比较新增加日期的和需要删除的日期 使用方法
阅读量:5876 次
发布时间:2019-06-19

本文共 2154 字,大约阅读时间需要 7 分钟。

1.场景描述:根据在日历选择的日期,数据库来保持我们选择日期。

2.方法,硬删除的方法,每次全部删除,然后再重新添加选择的新的日期。这样导致如果需要保存create_time的情况,那么每次操作的都是最新的create_time

3.思路,只要动态发生变化的才需要进行添加,或删除。如:

3.1 20150125,20150126,20150127,

3.2 20150124,20150125,20150126,(新增一个20150124,删除一个20150127,中间的20150125,20150126不变)

3.1中的3个日期放入Map中,日期作为key,value默认为1

3.2中的3个日期放入Map中,日期作为key,value默认为1

遍历3.2中的Map,和3.1中的Map进行比较,存在相同的,将Value加1变成2,新增的放入另外一个3.3 Map中等待添加。

4.最后把需要3.1中value=1的删除,将3.3 Map添加进来就可以了。这个思路也可以比较两个List的重复项。

5.实际工作中的代码:

try{//            carFilterMapper.delCarFilter(carNo);  //逻辑调整,不要先删除,后添加的方式。                        Map
mpNew = new HashMap
(); for (String string : busyTime) { mpNew.put(string, 1); //默认值1 } List
> addFilters=new ArrayList
>(); //新增的。 //逻辑调整,已经存在的记录。 Map
mpOld = new HashMap
(); List
ls = carFilterMapper.queryBusyTimeStr(carNo); for (String string : ls) { mpOld.put(string, 1); } for(Map.Entry
entry:mpNew.entrySet()){ //新的 String date = entry.getKey(); if(mpOld.containsKey(date)){ mpOld.put(date, 2); //标识旧的。Value变成2,没有重复的Value仍然是原来的,这也是我们需要删除的。 }else{ Map
addBusyTime = new HashMap
(); addBusyTime.put("carNo", carNo); addBusyTime.put("date", date); addBusyTime.put("week", Calculator.getWeekByTime(date)); addFilters.add(addBusyTime); } } //需要移除的。 for(Map.Entry
entry:mpOld.entrySet()) { if(entry.getValue()==1) //无重复的。删除 { String date = entry.getKey(); //日期 Map
delBusyTime = new HashMap
(); delBusyTime.put("carNo", carNo); delBusyTime.put("date", date); // delFilters.add(busyTime); carFilterMapper.delCarFilterByDate(delBusyTime); } } if(addFilters != null && addFilters.size() != 0){ carFilterMapper.addCarFilterV4(addFilters); } /*List
> param = new ArrayList
>(); if (busyTime != null && busyTime.size() != 0){ for (String date : busyTime){ Map
m = new HashMap
(); m.put("carNo", carNo); m.put("date", date); m.put("week", Calculator.getWeekByTime(date));//add by zg 2014.12.28 得到星期 param.add(m); } carFilterMapper.addCarFilterV4(param); }*/ } catch (Exception e){ logger.error(e.toString()); return ErrorCode.SYS_ERROR; } return ErrorCode.SUCCESS;

 

转载地址:http://onzix.baihongyu.com/

你可能感兴趣的文章
jquery css3问卷答题卡翻页动画效果
查看>>
MDK5.00中*** error 65: access violation at 0xFFFFFFFC : no 'write' permission的一种解决方法
查看>>
Android 集成支付宝支付详解
查看>>
SQL分布式查询、跨数据库查询
查看>>
C#------连接SQLServer和MySQL字符串
查看>>
Arcgis Licensemanager 不能启动的原因之一(转载)
查看>>
(原)Android在子线程用handler发送的消息,主线程是怎么loop到的?
查看>>
$digest already in progress 解决办法——续
查看>>
虚拟机 centos设置代理上网
查看>>
Struts2中Date日期转换的问题
查看>>
mysql 数据类型
查看>>
Ubuntu 设置当前用户sudo免密码
查看>>
设置tomcat远程debug
查看>>
android 电池(一):锂电池基本原理篇【转】
查看>>
Total Command 常用快捷键
查看>>
ionic 调用手机的打电话功能
查看>>
怎么使用阿里云直播服务应用到现在主流直播平台中
查看>>
Xcode全局替换内容,一键Replace
查看>>
1000 加密算法
查看>>
exif_imagetype() 函数在linux下的php中不存在
查看>>