Извлечение списка из NavigableMap - PullRequest
0 голосов
/ 24 января 2019

Это дополнительный вопрос от моего предыдущего вопроса .

Я пытаюсь реализовать NavigableMap, определенный как NavigableMap<Timestamp, Event>. Мне нужно, чтобы эта карта была для меня как кеш. Каждые 5 минут я обновляю это NavigableMap.

Один поток обновляет этот NavigableMap, а другой читает из него, поэтому он должен быть потокобезопасным. Всякий раз, когда у меня есть запрос, мне нужно было бы получить список подмножеств Events, отметки времени которого находятся в пределах заданного времени start и end.

Какой самый эффективный способ преобразовать NavigableMap в этот список подмножеств, скажем, ArrayList? И что такое поточно-ориентированная реализация этого интерфейса?

Очевидно, NavigableMap имеет метод подкарты, а также floor и ceiling, но я не вижу ничего, чтобы преобразовать в список с временем начала и окончания.

1 Ответ

0 голосов
/ 24 января 2019

Чтобы извлечь диапазон клавиш из NavigableMap, позвоните subMap(K fromKey, K toKey) или subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive).

Если выпросто хотите, чтобы значения были представлены в виде списка:

List<Event> list = new ArrayList<>(map.subMap(start, end).values());

что такое поточно-ориентированная реализация этого интерфейса?

Согласно Javadoc : ConcurrentSkipListMap

...