JAVA:检查开始日期和结束日期的对象集合是否重叠-最好的方法



我有多个Java日期时间列表,MyCustomDate对象包含(开始日期时间和结束日期时间(LocalDateTime,时间为小时和秒

我需要编写函数来检查我的列表中是否有重叠日期,返回true\false-并具有最佳性能

可以使用java8(流函数(

您必须相互测试所有范围。没有其他办法。尝试这种方式,尽管这只是一种实现,但有很多正确的方法可以实现:

public boolean isThereOverlapingRanges(List<CustomDateRange> ranges) {
if (ranges.size() <= 1) {
return false;
}
boolean overlaping = false;
for(int i = 1; i < ranges.size(); i++) {
if (isDateInRange(ranges.get(0).start(), ranges.get(i)) ||
isDateInRange(ranges.get(0).end(), ranges.get(i))) {
overlaping = true;
break;
}
}
return overlaping || isThereOverlapingRanges(ranges.subList(1, ranges.size());
}
private boolean isDateInRange(DateTime date, CustomDateRange range) {
return date.after(range.start()) && date.before(range.end());
}

最新更新