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;

 

你可能感兴趣的:(map)