需求:面积及有效期范围不能重叠

int数组类型的区间判断
// <= 是两个闭区间,如果前闭后开可用<
// 判断A、B两个区间是否有重合,
public static boolean judge(int[] A, int[] B) {
    return Math.max(A[0], B[0]) <= Math.min(A[1], B[1]);
}

public static void main(String[] args) {
    System.out.println(judge(new int[]{1, 3}, new int[]{2, 5}));
    System.out.println(judge(new int[]{1, 3}, new int[]{4, 5}));
    System.out.println(judge(new int[]{3, 5}, new int[]{4, 8}));
}
日期范围区间判断
/**
 * 判断日期范围是否有重叠(日期到天)
 *
 * List<String> dates = new ArrayList<>();
 * dates.add("2022-06-01,2022-09-03");
 * dates.add("2022-07-01,2022-07-15");
 * System.out.println("日期范围是否重叠: " + overlapping(dates));
 */
private boolean overlapping(List<String> list) {
    if (list == null || list.size() <= 1) {
        return false;
    }
    for (int i = 0; i < list.size(); i++) {
        String date1[] = list.get(i).split(",");
        Date beginDate1 = DateUtil.parse(date1[0]);
        Date endDate1 = DateUtil.parse(date1[1]);
        for (int j = i + 1; j < list.size(); j++) {
            String date2[] = list.get(j).split(",");
            Date beginDate2 = DateUtil.parse(date2[0]);
            Date endDate2 = DateUtil.parse(date2[1]);
            if (!beginDate2.before(beginDate1)) {
                if (!beginDate2.after(endDate1)) {
                    return true;
                }
            } else if (!endDate2.before(beginDate1)) {
                return true;
            }
        }
    }
    return false;
}
自己根据需求优化写法
/**
* 判断面积或时间是否有重叠
*
* @param checkType 校验类型( area:面积区间  time:时间区间)
* @Auther: czw
* @Description:
* @Date: 2022/12/6 17:41
* @Version: 1.0
*/
public static boolean checkOverlapping(String checkType, CostConfig costConfig, List<CostConfig> list) {
   if (ObjectUtil.isNotEmpty(list)) {
       for (CostConfig config : list) {
           if (checkType.equals("area")) {
               boolean flag = NumberUtil.isLessOrEqual(NumberUtil.max(costConfig.getAreaStart(), config.getAreaStart()), NumberUtil.min(costConfig.getAreaEnd(), config.getAreaEnd()));
               if (flag) {
                   return true;
               }
           } else if (checkType.equals("time")) {
               if (!config.getStartTime().before(costConfig.getStartTime())) {
                   if (!config.getStartTime().after(costConfig.getEndTime())) {
                       return true;
                   }
               } else if (!config.getEndTime().before(costConfig.getStartTime())) {
                   return true;
               }
           }
       }
   }
   return false;
}

public static void main(String[] args) {
    CostConfig costConfig = new CostConfig();
    costConfig.setAreaStart(new BigDecimal(10));
    costConfig.setAreaEnd(new BigDecimal(15));
    costConfig.setStartTime(DateUtil.parse("2022-06-01 08:00:00"));
    costConfig.setEndTime(DateUtil.parse("2022-09-03 07:59:59"));

    List<CostConfig> list = new ArrayList<>();

    CostConfig config1 = new CostConfig();
    config1.setAreaStart(new BigDecimal(20));
    config1.setAreaEnd(new BigDecimal(35));
    config1.setStartTime(DateUtil.parse("2022-09-08 08:00:00"));
    config1.setEndTime(DateUtil.parse("2023-01-03 07:59:59"));
    list.add(config1);

    CostConfig config2 = new CostConfig();
    config2.setAreaStart(new BigDecimal(15));
    config2.setAreaEnd(new BigDecimal(20));
    config2.setStartTime(DateUtil.parse("2022-09-03 08:00:00"));
    config2.setEndTime(DateUtil.parse("2022-10-03 07:59:59"));
    list.add(config2);

    System.out.println(checkOverlapping("area",costConfig, list));
}

以上方法有其他大佬的写法及自己的一些想法