/**
* 判断多个时间段是否有重叠(交集)
*
* @param rangeList 时间段数组
* @param isStrict 是否严格重叠,true 严格,没有任何相交或相等;false 不严格,可以首尾相等
* @return 返回是否重叠
*/
public static boolean isOverlap(List<Range> rangeList, boolean isStrict) {
rangeList = rangeList.stream().sorted(Comparator.comparingLong(Range::getStart)).collect(Collectors.toList());
for (int i = 1; i < rangeList.size(); i ++) {
if (isStrict) {
if (!(rangeList.get(i - 1).getEnd() < rangeList.get(i).getStart())) {
return true;
}
} else {
if (!(rangeList.get(i - 1).getEnd() <= rangeList.get(i).getStart())) {
return true;
}
}
}
//最后一个班次如果跨天
if (rangeList.get(rangeList.size() - 1).getEnd() < rangeList.get(rangeList.size() - 1).getStart() && rangeList.ge
班次时间段不重复校验
于 2022-07-20 16:24:48 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)