最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java如何確定兩個(gè)區(qū)間范圍是否有交集

 更新時(shí)間:2023年12月21日 16:32:25   作者:張小洛  
這篇文章主要介紹了Java如何確定兩個(gè)區(qū)間范圍是否有交集問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

問(wèn)題背景

日常工作項(xiàng)目中可能會(huì)遇到類(lèi)似的針對(duì)兩個(gè)及以上的區(qū)間范圍來(lái)判斷是否有交集的場(chǎng)景;

可能是兩個(gè)日期時(shí)間段、地點(diǎn)距離區(qū)間、金額范圍區(qū)間等等。

第一次遇到難免會(huì)覺(jué)得兩個(gè)區(qū)間的可能性比較多,使用一一窮舉的方式顯然不行的, 這時(shí)候不妨換一種思路來(lái)思考就簡(jiǎn)單清晰多了。

思路分析

如果首先考慮相交的情況是比較的,這個(gè)時(shí)候需要反其道而行,即考慮不相交的情況就相對(duì)簡(jiǎn)單多了;

其實(shí)不相交的情況就兩種:

  • 兩者不連續(xù),區(qū)間1的范圍完全在區(qū)間2的范圍之前
  • 兩者不連續(xù),區(qū)間1的范圍完全在區(qū)間2的范圍之后

圖示如下:

情況A:如果成立,則必定有 EndRange1 < StartRange2

情況B:如果成立,則必定有 EndRange2 < StartRange1

綜上兩種情況可以得出:如果情況A或者情況B都不成立,則重疊必定存在 (如果一個(gè)區(qū)域既不是完全在另一個(gè)區(qū)域之后,也不是完全在另一個(gè)區(qū)域之前,那么它們必須重疊。)

根據(jù)摩根定律可得出:

Not (A Or B) <=> Not A And Not B

總結(jié)結(jié)論

由以上思路分析得出如果兩個(gè)區(qū)間范圍相交(重疊),則必定存在 (StartA <= EndB) and (EndA >= StartB);他的包含條件是邊完全相交(重疊)。

如果希望排除情況,請(qǐng)將>=操作符更改為>,將<=操作符更改為<

代碼示例

   @Test
   public void test01() {
 
        Double[] a = new Double[]{90D, Double.MAX_VALUE};
        Double[] b = new Double[]{10D, 90D};
        a = new Double[]{0D, 10D};
 
        boolean overlap = isIntervalOverlap(a, b);
        if (overlap) {
            System.out.println("相交");
        } else {
            System.out.println("不相交");
        }
    }
 
    private static boolean isIntervalOverlap(Double[] inrA, Double[] inrB) {
        if (inrA.length < 2 || inrB.length < 2) {
            throw new RuntimeException("區(qū)間范圍必須包含兩個(gè)值以上");
        }
        Arrays.sort(inrA);
        Arrays.sort(inrB);
 
        // (StartA <= EndB) and (EndA >= StartB)
        if (inrA[0] < inrB[inrB.length - 1] && inrA[inrA.length - 1] > inrB[0]) {
            return true;
        } else {
            return false;
        }
    }

最后

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

參考及拓展:Determine Whether Two Date Ranges Overlap

相關(guān)文章

  • Java分頁(yè)工具類(lèi)及其使用(示例分享)

    Java分頁(yè)工具類(lèi)及其使用(示例分享)

    本篇文章主要分享了Java分頁(yè)工具類(lèi)及其使用的示例代碼,具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • 一文掌握spring cloud gateway(總結(jié)篇)

    一文掌握spring cloud gateway(總結(jié)篇)

    Spring Cloud Gateway是Spring Cloud的全新項(xiàng)目,該項(xiàng)目是基于Spring 5.0,Spring WebFlux和Project Reactor等技術(shù)開(kāi)發(fā)的網(wǎng)關(guān),它旨在為微服務(wù)架構(gòu)提供一種簡(jiǎn)單有效的統(tǒng)一的API路由管理方式,本文通過(guò)實(shí)例代碼總結(jié)介紹spring cloud gateway的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2024-12-12
  • SpringBoot AOP處理請(qǐng)求日志打印功能代碼實(shí)例

    SpringBoot AOP處理請(qǐng)求日志打印功能代碼實(shí)例

    這篇文章主要介紹了SpringBoot AOP處理請(qǐng)求日志打印功能代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Spring Boot中日志管理與異常處理實(shí)踐指南

    Spring Boot中日志管理與異常處理實(shí)踐指南

    本文系統(tǒng)化講解SpringBoot日志管理與異常處理,涵蓋Logback配置、分層異常處理、上下文記錄及ELK集成,強(qiáng)調(diào)日志分級(jí)、自定義異常設(shè)計(jì),增強(qiáng)應(yīng)用穩(wěn)定性與可維護(hù)性,感興趣的朋友跟隨小編一起看看吧
    2025-06-06
  • Java中求Logn/log2 的精度問(wèn)題

    Java中求Logn/log2 的精度問(wèn)題

    這篇文章主要介紹了Java中求Logn/log2 的精度問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringCloud微服務(wù)熔斷器Hystrix使用詳解

    SpringCloud微服務(wù)熔斷器Hystrix使用詳解

    這篇文章主要介紹了Spring Cloud Hyxtrix的基本使用,它是Spring Cloud中集成的一個(gè)組件,在整個(gè)生態(tài)中主要為我們提供服務(wù)隔離,服務(wù)熔斷,服務(wù)降級(jí)功能,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • IDEA一鍵生成方法的序列圖神操作

    IDEA一鍵生成方法的序列圖神操作

    為了能夠更快更清晰地搞清對(duì)象之間的調(diào)用關(guān)系,我經(jīng)常需要用到序列圖。手動(dòng)畫(huà)序列圖還是很麻煩費(fèi)時(shí)的,不過(guò)?IDEA?提供了一個(gè)叫做SequenceDiagram?的插件幫助我們解決這個(gè)問(wèn)題。通SequenceDiagram?這個(gè)插件,我們一鍵可以生成時(shí)序圖
    2022-01-01
  • 基于@AliasFor注解的用法及說(shuō)明

    基于@AliasFor注解的用法及說(shuō)明

    這篇文章主要介紹了基于@AliasFor注解的用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java利用正則取標(biāo)簽之間的數(shù)據(jù)

    Java利用正則取標(biāo)簽之間的數(shù)據(jù)

    這篇文章主要介紹了Java利用正則取標(biāo)簽之間的數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Spring核心IoC容器的依賴注入接口和層級(jí)包命名規(guī)范

    Spring核心IoC容器的依賴注入接口和層級(jí)包命名規(guī)范

    這篇文章主要介紹了Spring核心IoC容器的依賴注入接口和層級(jí)包命名規(guī)范,IOC又名控制反轉(zhuǎn),把對(duì)象創(chuàng)建和對(duì)象之間的調(diào)用過(guò)程,交給Spring進(jìn)行管理,目的是為了降低耦合度,需要的朋友可以參考下
    2023-05-05

最新評(píng)論

团风县| 安吉县| 义乌市| 五寨县| 龙岩市| 汝南县| 奈曼旗| 甘德县| 荆州市| 札达县| 中宁县| 收藏| 来安县| 东兴市| 泸水县| 广安市| 兰考县| 保山市| 南昌县| 岚皋县| 凤山市| 松桃| 行唐县| 黄冈市| 武城县| 永修县| 六盘水市| 蒙阴县| 江油市| 桑植县| 姜堰市| 长葛市| 汪清县| 永丰县| 都匀市| 康乐县| 临武县| 宜良县| 富平县| 乾安县| 井冈山市|