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

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

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

問題背景

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

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

第一次遇到難免會覺得兩個區(qū)間的可能性比較多,使用一一窮舉的方式顯然不行的, 這時候不妨換一種思路來思考就簡單清晰多了。

思路分析

如果首先考慮相交的情況是比較的,這個時候需要反其道而行,即考慮不相交的情況就相對簡單多了;

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

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

圖示如下:

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

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

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

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

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

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

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

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

代碼示例

   @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ū)間范圍必須包含兩個值以上");
        }
        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;
        }
    }

最后

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

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

相關(guān)文章

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

    Java分頁工具類及其使用(示例分享)

    本篇文章主要分享了Java分頁工具類及其使用的示例代碼,具有一定的參考價值,下面跟著小編一起來看下吧
    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ù)開發(fā)的網(wǎng)關(guān),它旨在為微服務(wù)架構(gòu)提供一種簡單有效的統(tǒng)一的API路由管理方式,本文通過實(shí)例代碼總結(jié)介紹spring cloud gateway的相關(guān)知識,感興趣的朋友一起看看吧
    2024-12-12
  • SpringBoot AOP處理請求日志打印功能代碼實(shí)例

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

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

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

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

    Java中求Logn/log2 的精度問題

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

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

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

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

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

    基于@AliasFor注解的用法及說明

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

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

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

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

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

最新評論

福建省| 棋牌| 喀什市| 西充县| 陈巴尔虎旗| 明光市| 霍邱县| 北京市| 金堂县| 广水市| 淄博市| 莆田市| 新绛县| 明溪县| 昌吉市| 嘉祥县| 台东市| 长汀县| 汨罗市| 定结县| 武乡县| 龙江县| 衡山县| 怀集县| 庆阳市| 紫阳县| 枣强县| 寻乌县| 平顶山市| 鹤庆县| 聊城市| 江陵县| 双桥区| 安平县| 虹口区| 东台市| 长岭县| 读书| 五家渠市| 久治县| 马山县|