JAVA 判断一系列区间值有没有重叠

判断一系列区间值比喻 0-20 10-8 21-100 ...等等 这些区间有没有重叠的方法:

java 复制代码
/**
 * @Author  Minco
 * @Date 15:44 2024-07-01
 * @Description  区间范围
 *//***/
public class Interval implements Comparable<Interval> {

    double start;
    double end;

    public Interval(double start, double end) {
        this.start = start;
        this.end = end;
    }

    public double getStart() {
        return start;
    }

    public double getEnd() {
        return end;
    }

    @Override
    public int compareTo(Interval other) {
        return Double.compare(this.getStart(), other.getStart());
    }

}
java 复制代码
import java.util.List;

public class IntervalOverlapChecker {


    public static boolean hasOverlap(List<Interval> intervals) {
        if (intervals == null || intervals.size() < 2) {
            return false;
        }

        // 首先对区间按起始位置进行排序
        intervals.sort(null);

        for (int i = 1; i < intervals.size(); i++) {
            // 如果当前区间的起始位置小于前一个区间的结束位置,则说明有重叠
            if (intervals.get(i).getStart() < intervals.get(i - 1).getEnd()) {
                return true;
            }
        }

        return false;
    }
}

使用:

java 复制代码
    List<SpokeSetmx> mxList=spokeSet.getMxList();
    List<Interval> intervals = new ArrayList<>(); //校验最小、最大
    for(SpokeSetmx mx:mxList){
            mx.setTenantId(tenantId);
            intervals.add(new Interval(mx.getMoney1(), mx.getMoney2()));
    }
    if(hasOverlap(intervals)) throw new BusExcep("消费范围阶梯存在重叠");
相关推荐
搬砖小匠12 分钟前
SpringBoot 通过自定义注解 + AOP 实现数据字典自动翻译(通用方案)
java·后端
今天AI了吗13 分钟前
【AI智能体】Hermes Agent 从部署到项目实战操作详解
java·人工智能·python·milvus
青山木25 分钟前
Hot 100 --- 搜索二维矩阵
java·算法·leetcode·矩阵
CoderYanger41 分钟前
Java EE:9.JVM(课件内容-上篇)
java·jvm·程序人生·面试·职场和发展·java-ee·程序员创富
xiaoqiMikko1 小时前
Spring Cloud Config 这个 CVE 的补丁,Maven Central 上根本没有
java·spring boot
残月心殇 请珍惜枸1 小时前
.NET陷阱之五:奇怪的OutOfMemoryException——大对象堆引起的问题与对策
java·jvm·.net
用户3126874877201 小时前
Spring Boot 配置体系到底怎么加载的?从 application.yml 到 @Conditional 的全链路拆解
java·spring boot
霸道流氓气质1 小时前
Java 后端防御性编程实践大全
java
Bonnie_12151 小时前
08-JUC并发基础-AQS-补充共享锁
java·开发语言
Zane19941 小时前
线程池入门:7 大核心参数与 4 种拒绝策略
java·后端