首页 > 代码库 > 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:比较新增加日期的和需要删除的日期 使用方法