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=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;
原文地址:https://www.cnblogs.com/simpledev/p/4253920.html