我有一個TreeMap的最後n個元素,看起來像這樣:如何獲得一個樹狀圖
TreeMap<Instant, HashMap<Type, Double>>
即時值代表一天的時間;對於每個傳遞的小時,值都存儲在我的地圖中。 現在我想獲得這張地圖的最後24個元素(以便過去的日子)。我怎麼能這樣做?
乾杯
我有一個TreeMap的最後n個元素,看起來像這樣:如何獲得一個樹狀圖
TreeMap<Instant, HashMap<Type, Double>>
即時值代表一天的時間;對於每個傳遞的小時,值都存儲在我的地圖中。 現在我想獲得這張地圖的最後24個元素(以便過去的日子)。我怎麼能這樣做?
乾杯
您可以使用descendingMap
調用來獲取地圖上的一個視圖,該視圖基本上是相反的順序,然後從該視圖獲取前24個條目(請撥打iterator
等)。 (Guava的Iterables提供一種限制迭代等有用的方法)
編輯:例如,爲了獲得最後的24個元素(以相反的順序,用番石榴),你可以使用:
List<HashMap<Type, Double>> lastValues = Lists.newArrayList
(Iterables.limit(map.descendingMap().values(), 24));
+1:鑰匙需要是24小時前的即時貼。 – 2011-12-21 11:17:43
這裏的問題是,如果我使用tailMap(),我需要知道確切的元素,尾部應該在哪裏開始......因爲地圖總是在變化,所以這並不適用。 – 2011-12-21 11:19:35
@NikolausHartlieb我認爲你需要確保在你獲取24個元素的過程中,地圖不會被改變。 (例如,獲取線程只能在HH:55之前啓動),否則無法爲您獲取正確的元素。例如您在10:59:59.990上獲取(通過tailMap或desendingMap)。數據集錯誤的概率非常高。 – Kent 2011-12-21 11:38:56
您可以將其設爲SortedMap<LocalDate, SortedMap<Hours, Map<Type, Double>>>
,以便您可以從外部Map
獲取最新日期。
太棒了,它的作品!謝謝! – 2011-12-21 13:44:57