我试图实现一种在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 PM
到October 27, 2018 1:09:13 PM
的范围(以人类可读的格式)。
但是,当我这样调用isMetricPresent
方法并将其传递给System.currentTimeMillis()
作为键(等于此时间戳值1540476195830
-> October 25, 2018 2:03:15.830 PM
)时,它对此调用null
返回salesRangeMap.get(theKey)
。
long currentTime = System.currentTimeMillis(); // 1540476195830
boolean isPresent = isMetricPresent("Metric1", currentTime);
据我目前的理解,键currentTime
位于salesRangeMap
的范围内。我目前的方法有什么问题?
答案 0 :(得分:3)
好吧,在我看来1540645753
<1540476195830
-您在地图中存储秒,但是查询毫秒。