Java - получить из Guava RangeMap возвращает ноль, пока ключ присутствует в Range - PullRequest
0 голосов
/ 25 октября 2018

Я попытался реализовать метод для поиска строки в 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.Что не так в моем нынешнем подходе?

1 Ответ

0 голосов
/ 25 октября 2018

Ну, мне кажется, что 1540645753 <<code>1540476195830 - вы сохраняете секунды на карте, но запрашивает миллис.

...