zoukankan      html  css  js  c++  java
  • 时间段去重复合并

     /**
         * 合并时间段去掉重复的
         *
         * 时间合并 12:00:00----13:00:00   &  12:30:00 --- 14:00:00  =====》 12:00:00----14:00:00
         * @param usertime
         */
        public static void unionTime(List<UserTime> usertime){
            //顺序timesixth在最后,不可以改其他的可以改
            /*List<UserTime> usertime = new ArrayList<UserTime>();
            SimpleDateFormat sdf=new SimpleDateFormat("HH:mm");
            UserTime ut = new UserTime(1, sdf.parse("12:00"), sdf.parse("13:00"));
            UserTime ut2 = new UserTime(1, sdf.parse("12:30"), sdf.parse("15:00"));
            UserTime ut3 = new UserTime(1, sdf.parse("16:00"), sdf.parse("19:00"));
            usertime.add(ut);
            usertime.add(ut2);
            usertime.add(ut3);*/
    
            timesixth(usertime);
        }
    
    
    
        private static void timesixth(List<UserTime> usertime) {
            for(int i=0;i<usertime.size()-1;i++){
                int j=i+1;
                if(usertime.get(i).getUserid()==usertime.get(j).getUserid()){
                    if(usertime.get(i).getEnd().after(usertime.get(j).getStart())
                            && usertime.get(i).getStart().before(usertime.get(j).getStart())
                            &&usertime.get(i).getEnd().before(usertime.get(j).getEnd())
                           ){
                        // |-----------|
                        //          |---------|
                        usertime.get(j).setStart(usertime.get(i).getStart());
                        usertime.remove(i);
                        timesixth(usertime);
                    }else if(usertime.get(i).getEnd().equals(usertime.get(j).getStart())) {
                        // |------|
                        //        |-----|
                        usertime.get(j).setStart(usertime.get(i).getStart());
                        usertime.remove(i);
                        timesixth(usertime);
                    }else if(usertime.get(i).getStart().before(usertime.get(j).getStart())
                            &&usertime.get(i).getEnd().equals(usertime.get(j).getEnd())
                    ){
                        //     |----------|    结尾相等
                        //        |-------|
                        usertime.remove(j);
    
                        timesixth(usertime);
                    }else if(usertime.get(i).getStart().after(usertime.get(j).getStart())
                            &&usertime.get(i).getEnd().equals(usertime.get(j).getEnd())){
                        //          |-----|    结尾相等
                        //        |-------|
                        usertime.remove(i);
                    }else if(usertime.get(i).getStart().equals(usertime.get(j).getStart())
                            &&usertime.get(i).getEnd().before(usertime.get(j).getEnd())){
                        // |------------|
                        // |--------------|
                        usertime.remove(i);
                        timesixth(usertime);
                    }else if(usertime.get(i).getStart().equals(usertime.get(j).getStart())
                            &&usertime.get(i).getEnd().after(usertime.get(j).getEnd())){
                        // |------------|
                        // |----------|
                        usertime.remove(j);
                        timesixth(usertime);
                    }else if(usertime.get(i).getStart().equals(usertime.get(j).getStart())&&usertime.get(i).getEnd().equals(usertime.get(j).getEnd())){
                        // |----------|
                        // |----------|
                        usertime.remove(i);
                        timesixth(usertime);
                    }else if(usertime.get(i).getStart().before(usertime.get(j).getStart())
                            &&usertime.get(i).getEnd().after(usertime.get(j).getStart())
                            && usertime.get(i).getStart().before(usertime.get(j).getEnd())
                            &&usertime.get(i).getEnd().after(usertime.get(j).getEnd())){
                        //     |----------|
                        //      |-------|
                        usertime.remove(j);
    
                        timesixth(usertime);
                    }else if(usertime.get(i).getStart().after(usertime.get(j).getStart())
                            && usertime.get(i).getEnd().before(usertime.get(j).getEnd())
                    ){
                        //            |------|
                        //          |---------|
                        usertime.remove(i);
                        timesixth(usertime);
                    }else{
    
                    }
                     /*  if(usertime.get(i).getEnd().before(usertime.get(i).getStart())){
                        // |--------|
                        //            |-------|
                        //不可以动
                    }*/
    
                }
            }
        }
    
        public static class UserTime implements Comparable<UserTime>{
            public int userid;//用户ID
            public String title;//这个是在full calendar插件使用的时候用到,可以忽略
            public Date start;//开始时间
            public Date end;//结束时间
            public UserTime(int userid, Date begintime, Date endtime,String title){
                this.userid=userid;
                this.start=begintime;
                this.end=endtime;
                this.title=title;
            }
    
            @Override
            public int compareTo(UserTime o) {
                //先用用户ID排序,最后用时间
                if(this.userid!=o.userid)
                    return this.userid-o.userid;
                else{
                    if(this.start.before(o.end))
                        return -1;
                    else
                        return 1;
                }
            }
    
            public String getTitle() {
                return title;
            }
    
            public void setTitle(String title) {
                this.title = title;
            }
    
            public int getUserid() {
                return userid;
            }
    
            public void setUserid(int userid) {
                this.userid = userid;
            }
    
            public Date getStart() {
                return start;
            }
    
            public void setStart(Date begintime) {
                this.start = begintime;
            }
    
            public Date getEnd() {
                return end;
            }
    
            public void setEnd(Date endtime) {
                this.end = endtime;
            }
    
        }
  • 相关阅读:
    Java并发编程:并发容器之ConcurrentHashMap(转载)
    Java ConcurrentModificationException异常原因和解决方法
    Java并发编程:同步容器
    Java并发编程:深入剖析ThreadLocal
    错误:The POM for org.codehaus.plexus:plexus-compiler-api:jar:2.2 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details的解决方法
    maven工程中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
    部署时发出警告: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:jx-web' did not find a matching property.的解决方法
    [WARNING] The POM for com.tao:jx-service:jar:0.0.1-SNAPSHOT is missing, no dependency information available
    maven工程中警告[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
    Eclipse中Errors occurred during the build最简单的解决方法
  • 原文地址:https://www.cnblogs.com/renjianjun/p/10568046.html
Copyright © 2011-2022 走看看