问题描述:
存在多个时间区间**[开始时间,结束时间]**的集合,求与集合内所有其他元素时间区间都没有交集的元素。
图示如下:
解决方案:
保证所有其他元素的结束时间在该元素的开始时间之前,或者开始时间在该元素的结束时间之后,即可判断是否与该元素时间区间有交集。
代码如下:
bean对象代码就不写了。
// target list
List<Person> personList2 = new ArrayList<>();
for (int i = 0; i < personList.size(); i++) {
boolean intersectionFlag = false;
for (int j = 0; j < personList.size(); j++) {
if (j != i) {
if (!(
personList.get(j).getEndTime().before(personList.get(i).getStartTime())
|| personList.get(j).getStartTime().after(personList.get(i).getEndTime())
)) {
intersectionFlag = true;
break;
}
}
}
if (!intersectionFlag) {
personList2.add(personList.get(i));
}
}
System.out.println(Arrays.toString(personList2.toArray()));