Как получить последние n элементов Treemap - PullRequest
5 голосов
/ 21 декабря 2011

У меня есть TreeMap, который выглядит следующим образом:

 TreeMap<Instant, HashMap<Type, Double>>

Мгновенные значения представляют часы дня;за каждый прошедший час значение сохраняется в моей карте.Теперь я хотел бы получить последние 24 элемента (то есть часы прошедшего дня) этой карты.Как я мог это сделать?

Приветствия

Ответы [ 3 ]

3 голосов
/ 21 декабря 2011

используйте TreeMap.tailMap () для него.

2 голосов
/ 21 декабря 2011

Вы можете использовать вызов descendingMap, чтобы получить вид на карте, который в основном в обратном порядке, а затем взять первые 24 записи из этого (вызов iterator и т. Д.).( Guava Iterables предоставляет полезные методы для ограничения повторяющихся и т. Д.)

EDIT: например, чтобы получить последние 24 элемента (в обратном порядке, ииспользуя гуаву) вы можете использовать:

List<HashMap<Type, Double>> lastValues = Lists.newArrayList
    (Iterables.limit(map.descendingMap().values(), 24));
0 голосов
/ 21 декабря 2011

Вы можете сделать это SortedMap<LocalDate, SortedMap<Hours, Map<Type, Double>>>, чтобы вы могли получить самую последнюю дату из внешнего Map.

...