[英]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 PM
年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
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.