簡體   English   中英

Java-從Guava獲取RangeMap中的鍵存在時,RangeMap返回null

[英]Java - get from Guava RangeMap returns null while key is present in the Range

我試圖實現一種在RangeMap中搜索字符串的方法。 我想檢查metricName是否在RangeMap中以及它是否存在於給定的時間范圍內。

private static RangeMap<Long, String> salesRangeMap = TreeRangeMap.create();
salesRangeMap.put(
      Range.closed(1540038517L, 1540645753L), "Metric1");

public static boolean isMetricPresent(String metricName, long theKey) {
             String metricFromMap = Objects.requireNonNull(salesRangeMap.get(theKey));
    if (StringUtils.containsIgnoreCase(metricName, metricFromMap)) {
        return true;
    } 
       return false;  
}

salesRangeMap中的鍵的范圍是從October 20, 2018 12:28:37 PMOctober 20, 2018 12:28:37 PMOctober 27, 2018 1:09:13 PM (以人類可讀的格式)。

但是,當我像這樣調用isMetricPresent方法並將其傳遞給System.currentTimeMillis()作為鍵(等於此時間戳值1540476195830 > October 25, 2018 2:03:15.830 PM 1540476195830 October 25, 2018 2:03:15.830 PM )時,此調用salesRangeMap.get(theKey)返回null salesRangeMap.get(theKey)

long currentTime = System.currentTimeMillis(); // 1540476195830
boolean isPresent = isMetricPresent("Metric1", currentTime);

就我當前的理解而言,關鍵currentTime存在於salesRangeMap的Range中。 我目前的方法有什么問題?

好吧,在我看來1540645753 < 1540476195830您正在地圖中存儲秒,但查詢毫秒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM