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("消费范围阶梯存在重叠");
相关推荐
在路上`6 分钟前
前端学习之后端java小白(二)-sql约束/建表
java·sql·学习
我真的是大笨蛋10 分钟前
JVM 四大晋升机制
java·jvm
木心爱编程17 分钟前
C++20多线程新特性:更安全高效的并发编程
java·jvm·c++20
ljf883817 分钟前
Java导出复杂excel,自定义excel导出
java·开发语言·excel
江流月照26 分钟前
PCIE地址空间介绍
java·服务器·网络
一只乔哇噻1 小时前
java后端工程师进修ing(研一版‖day44)
java·开发语言·学习·算法
老华带你飞1 小时前
畅阅读小程序|畅阅读系统|基于java的畅阅读系统小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序·毕设·畅阅读系统小程序
卓码软件测评4 小时前
第三方软件测试机构【性能测试工具用LoadRunner还是JMeter?】
java·功能测试·测试工具·jmeter·性能优化
Lionel_SSL7 小时前
《深入理解Java虚拟机》第三章读书笔记:垃圾回收机制与内存管理
java·开发语言·jvm
记得开心一点嘛7 小时前
手搓Springboot
java·spring boot·spring