Java判断范围型的数据是否存在重叠(数值类型、日期类型)
import java.time.LocalDate;
public class RangeOverlapDetector {
/**
* 判断两个数值型范围是否重叠。
* @param range1 第一个范围,格式为[start1, end1]
* @param range2 第二个范围,格式为[start2, end2]
* @return 如果范围重叠,返回true;否则返回false
*/
public static boolean hasNumericRangeOverlap(int[] range1, int[] range2) {
return range1[1] > range2[0] && range1[0] < range2[1];
}
/**
* 判断两个日期型范围是否重叠。
* @param range1 第一个范围,格式为[startDate1, endDate1]
* @param range2 第二个范围,格式为[startDate2, endDate2]
* @return 如果范围重叠,返回true;否则返回false
*/
public static boolean hasDateRangeOverlap(LocalDate[] range1, LocalDate[] range2) {
return !range1[1].isBefore(range2[0]) && !range1[0].isAfter(range2[1]);
}
public static void main(String[] args) {
// 数值型范围示例
int[] range1 = {1, 5};
int[] range2 = {3, 8};
System.out.println("数值型范围重叠: " + hasNumericRangeOverlap(range1, range2));
// 日期型范围示例
LocalDate[] dateRange1 = {LocalDate.of(2023, 1, 1), LocalDate.of(2023, 1, 10)};
LocalDate[] dateRange2 = {LocalDate.of(2023, 1, 5), LocalDate.of(2023, 1, 15)};
System.out.println("日期型范围重叠: " + hasDateRangeOverlap(dateRange1, dateRange2));
}
}
这段代码提供了两个静态方法,hasNumericRangeOverlap
和 hasDateRangeOverlap
,分别用于判断两个数值型和日期型范围是否存在重叠。在main
方法中提供了使用这两个方法的示例。
评论已关闭