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;
}