zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    汉诺塔学习笔记,有不正确的地方请小伙伴们指正~·~
    梯有N阶,上楼可以一步上一阶,也可以一步上二阶。编写一个程序,计算共有多少中不同的走法?
    HTTP Status 500
    java基础知识
    JAVA多线程和并发基础面试问答
    thymeleaf中的th:remove用法
    thymeleaf:局部变量 th:with
    springboot: thymeleaf 使用详解
    eclipse修改工作目录颜色
    The user specified as a definer ('root'@'%') does not exist
  • 原文地址:https://www.cnblogs.com/simpledev/p/4253920.html
Copyright © 2011-2022 走看看