Java - 从 Guava RangeMap returns 获取 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 27, 2018 1:09:13 PM 的范围(以人类可读的格式)。

然而,当我像这样调用 isMetricPresent 方法并将其作为键传递时 System.currentTimeMillis() (等于此时间戳值 1540476195830 -> October 25, 2018 2:03:15.830 PM) , 它 returns null 在此调用 salesRangeMap.get(theKey).

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

据我目前的理解,键 currentTime 出现在 salesRangeMap 的范围内。我目前的做法有什么问题?

嗯,在我看来 1540645753 < 1540476195830 - 您在地图中存储秒数,但查询毫秒数。