区期间校验

public static void main(String[] args) {

int date[][] = {{10, 13}, {13, 15}, {14, 15}, {18, 20}};
int result[][] = new int[3][3];

int length = date.length;

boolean[] days = new boolean[31];

for (int i = 0; i < length; i++) {
    for (int j = date[i][0]; j <= date[i][1]; j++) {
        days[j] = true;
    }
}
boolean arr = false;
int r = 0;
for (int d = 1; d < days.length; d++) {
    if (days[d] == true && !arr) {
        result[r][0] = d;
        arr = true;
    } else if (days[d] == false && arr) {
        result[r][1] = d - 1;
        arr = false;
        r = r + 1;
    }
}
for (int i = 0; i < result.length; i++) {
    for (int j = 0; j < result[i].length; j++) {
        if (result[i][j] != 0)
            System.out.print(result[i][j] + ",");
    }
    System.out.println("\n");
}

}

https://download.youkuaiyun.com/download/chancui9673/19041111

package com.example.demo;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.example.demo.pojo.People;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;

public class DemoApplication {

    public static void main(String[] args) throws ParseException {
        //准备数据
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        List<People> peoples = new ArrayList();
        People p1 = new People();
        p1.setType(1);
        p1.setStart(format.parse("2011-11-09"));
        p1.setEnd(format.parse("2011-11-15"));

        People p2 = new People();
        p2.setType(1);
        p2.setStart(format.parse("2011-11-10"));
        p2.setEnd(format.parse("2011-11-16"));


        People p3 = new People();
        p3.setType(1);
        p3.setStart(format.parse("2011-11-18"));
        p3.setEnd(format.parse("2011-11-25"));

        People p4 = new People();
        p4.setType(2);
        p4.setStart(format.parse("2011-11-18"));
        p4.setEnd(format.parse("2011-11-26"));


        People p5 = new People();
        p5.setType(1);
        p5.setStart(format.parse("2011-11-28"));
        p5.setEnd(format.parse("2011-11-29"));


        People p6 = new People();
        p6.setType(2);
        p6.setStart(format.parse("2011-11-28"));
        p6.setEnd(format.parse("2011-11-29"));

        peoples.add(p1);
        peoples.add(p2);
        peoples.add(p3);
        peoples.add(p4);

        peoples.add(p5);
        peoples.add(p6);
        //数据准备结束


        List<People> tmp = new ArrayList();
        for (People people : peoples) {

            int flag = 0;
            for (People p : peoples) {

                if ((people.getStart().before(p.getStart()) && people.getEnd().after(p.getStart()))
                        ||
                        (people.getStart().before(p.getEnd()) && people.getEnd().after(p.getEnd()))) {
                    flag =1;
                    //设置开始
                    if (people.getStart().before(p.getStart())) {
                        people.setStart(p.getStart());
                    }

                    //设置结束
                    if (people.getEnd().after(p.getEnd())) {
                        people.setEnd(p.getEnd());
                    }

                    if (!people.getType().equals(p.getType())) {
                        //参与退出
                        people.setType(3);
                    }

                }

                //时间完全重合
                if(DateUtils.isSameDay(people.getStart(), p.getStart()) && DateUtils.isSameDay(people.getEnd(), p.getEnd()) ){
                    flag =1;
                    if (!people.getType().equals(p.getType())) {
                        //参与退出
                        people.setType(3);
                    }
                }
            }

            if(flag == 1){
                tmp.add(people);
            }

        }


        System.out.println(JSONObject.toJSONStringWithDateFormat(tmp, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat));

        //去重
        List<People> newList = tmp.stream().collect(Collectors.collectingAndThen(
                Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(People::getStart))), ArrayList::new));

        //最后结果
        System.out.println(JSONObject.toJSONStringWithDateFormat(newList, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat));

    }

}

package com.example.demo.pojo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class People {
    //1:参与 2:退出 3参与退出
    private Integer type;

    private Date start;

    private Date end;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值