首页 > 代码库 > Map:比较新增加日期的和需要删除的日期 使用方法
Map:比较新增加日期的和需要删除的日期 使用方法
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=http://www.mamicode.com/1的删除,将3.3 Map添加进来就可以了。这个思路也可以比较两个List的重复项。
5.实际工作中的代码:
try{// carFilterMapper.delCarFilter(carNo); //逻辑调整,不要先删除,后添加的方式。 Map<String,Integer> mpNew = new HashMap<String, Integer>(); for (String string : busyTime) { mpNew.put(string, 1); //默认值1 } List<Map<String,Object>> addFilters=new ArrayList<Map<String,Object>>(); //新增的。 //逻辑调整,已经存在的记录。 Map<String,Integer> mpOld = new HashMap<String, Integer>(); List<String> ls = carFilterMapper.queryBusyTimeStr(carNo); for (String string : ls) { mpOld.put(string, 1); } for(Map.Entry<String, Integer> entry:mpNew.entrySet()){ //新的 String date = entry.getKey(); if(mpOld.containsKey(date)){ mpOld.put(date, 2); //标识旧的。Value变成2,没有重复的Value仍然是原来的,这也是我们需要删除的。 }else{ Map<String,Object> addBusyTime = new HashMap<String, Object>(); addBusyTime.put("carNo", carNo); addBusyTime.put("date", date); addBusyTime.put("week", Calculator.getWeekByTime(date)); addFilters.add(addBusyTime); } } //需要移除的。 for(Map.Entry<String, Integer> entry:mpOld.entrySet()) { if(entry.getValue()==1) //无重复的。删除 { String date = entry.getKey(); //日期 Map<String,Object> delBusyTime = new HashMap<String, Object>(); delBusyTime.put("carNo", carNo); delBusyTime.put("date", date); // delFilters.add(busyTime); carFilterMapper.delCarFilterByDate(delBusyTime); } } if(addFilters != null && addFilters.size() != 0){ carFilterMapper.addCarFilterV4(addFilters); } /*List<Map<String, Object>> param = new ArrayList<Map<String, Object>>(); if (busyTime != null && busyTime.size() != 0){ for (String date : busyTime){ Map<String, Object> m = new HashMap<String, Object>(); 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;
Map:比较新增加日期的和需要删除的日期 使用方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。