Java解决校验区间值重复问题

博客记录了在项目中处理区间值数据重复问题的方法,包括全闭、左闭右开、左开右闭和全开四种区间类型。提供了一种实用的代码实现,包括工具类、实体类和测试类,强调实际应用时需根据需求灵活调整实体类。
摘要由CSDN通过智能技术生成

背景

在项目中需要存储区间值数据,并进行重复区间判断。终于找到一种有用的方案,特此记录一下,以防不备之需。

取值范围符号包括:

  • 7-全闭区间
  • 8-左闭右开区间
  • 9-左开右闭区间
  • 10-全开区间

下图为实际应用场景:
在这里插入图片描述

实现代码如下:

工具类

public class SectionUtil {
   
    //最小值
    private String min_entity;
    //最大值
    private String max_entity;
    //左侧括号状态:false -开区间  true-- 闭区间
    private boolean left_sate = false;
    //右侧括号状态:false -开区间  true-- 闭区间
    private boolean right_sate = false;
    private SectionUtil() {
   
    }

    public SectionUtil(String min_entity, String max_entity, boolean left_sate, boolean right_sate) {
   
        this.min_entity = min_entity;
        this.max_entity = max_entity;
        this.left_sate = left_sate;
        this.right_sate = right_sate;
    }

    private String getMin_entity() {
   
        return min_entity;
    }

    private String getMax_entity() {
   
        return max_entity;
    }

    private boolean isLeft_sate() {
   
        return left_sate;
    }

    private boolean isRight_sate() {
   
        return right_sate;
    }

    /**
     * @description: 创建负区间((负无穷,X])
     * @param value 区间最大值
     * @param right_sate 区间开闭状态
     */
    private static SectionUtil creatFu(String value, boolean right_sate) {
   

        return new SectionUtil("", value, false, right_sate);
    }
    /**
     * @description: 创建正区间[X,正无穷))
     * @param value 区间最小值
     * @param left_sate 区间开闭状态
     */
    private static SectionUtil creatZheng(String value, boolean left_sate) {
   

        return new SectionUtil(value, "", left_sate, false);
    }
    /**
     * @description: 创建闭合区间([X,Y])
     * @param min   区间最小值
     * @param max   区间最大值
     * @param left_sate 区间左侧开闭状态
     * @param right_sate 区间右侧开闭状态
     * @return
     */
    private static SectionUtil creat(String min, boolean left_sate, String max, boolean right_sate) {
   

        return new SectionUtil(min, max, left_sate, right_sate);
    }
    /**
     * @description:  将实体类转换成区间集合
     * @param record  待转换的实体类
     * @return 转换后的区间集合类(不等于时转换后为2个区间,所以采用集合)
     */
    private static List<SectionUtil> getSections(RepeatIntervalVO record) {
   
        List<SectionUtil> list = new ArrayList
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值