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("消费范围阶梯存在重叠");
相关推荐
菠萝崽.1 小时前
RabbitMQ高级篇-MQ的可靠性
java·分布式·后端·消息队列·rabbitmq·异步编程
万叶学编程2 小时前
@RequestParam 和 @RequestBody、HttpServletrequest 与HttpServletResponse
java
zfj3213 小时前
H2数据库源码学习+debug, 数据库 sql、数据库引擎、数据库存储从此不再神秘
java·数据库·sql·学习·数据库底层原理
编程、小哥哥4 小时前
Java面试实战:从Spring Boot到分布式缓存的深度探索
java·spring boot·redis·微服务·grpc·缓存技术·面试技巧
在未来等你4 小时前
互联网大厂Java求职面试:Spring AI与大模型交互的高级模式与自定义开发
java·微服务·云原生·大模型·spring ai
androidwork4 小时前
Android Kotlin权限管理最佳实践
android·java·kotlin
sakoba4 小时前
Tomcat简述介绍
java·tomcat
键盘客5 小时前
Spring Boot 配置明文密码加密,防泄漏
java·spring boot·后端·spring
二进制小甜豆5 小时前
SpringBoot快速上手
java·spring boot·maven
苹果酱05676 小时前
Golang中的runtime.LockOSThread 和 runtime.UnlockOSThread
java·vue.js·spring boot·mysql·课程设计