2011-10-14 50 views
0

我有下面的函數應該返回一個日期的地圖到很長的時間,以便您按照逆時間順序遍歷條目。Java地圖:反向時間順序

countsLinkedHashMap,所以條目存儲在它們插入(這是按時間順序在這種情況下)的順序爲:

public Map<Date, Long> getCountsChronological() { 
    Map<Date, Long> chronologicalMap = 
    new TreeMap<Date, Long>(Collections.reverseOrder()); 
    chronologicalMap.putAll(counts); 
    return chronologicalMap; 
} 

此功能不起作用,但它似乎在理論上,它應該。當我遍歷返回的地圖時,我仍然按照時間順序獲取條目。

+0

顯示?一個簡短但完整的例子真的會有幫助。請注意,「計數」條目的顯示順序無關緊要。 –

+0

好吧,我編輯了一下這個問題。 – Charlotte

+0

看到我的答案是一個簡短但完整的程序,它顯示了它的工作。你能想出一個類似的*失敗*? –

回答

2

無法複製 - 對我來說工作得很好:

import java.util.*; 

public class Test { 

    public static void main(String[] args) { 
     Map<Date, Long> map = new HashMap<Date, Long>(); 

     map.put(new Date(100), 100L); 
     map.put(new Date(400), 400L); 
     map.put(new Date(300), 300L); 
     map.put(new Date(200), 200L); 

     map = reverseChronological(map); 
     for (Map.Entry<Date, Long> entry : map.entrySet()) { 
      System.out.println(entry.getKey().getTime()); 
     } 
    }  

    public static Map<Date, Long> reverseChronological(Map<Date, Long> input) { 
     Map<Date, Long> chronologicalMap = 
      new TreeMap<Date, Long>(Collections.reverseOrder()); 
     chronologicalMap.putAll(input); 
     return chronologicalMap; 
    } 
} 

你確定你不是遍歷地圖,而不是返回一個?

+0

是的,它也適用於我!原來我被我填充的表格中的標題愚弄了。作爲標題的日期列表沒有被逆轉,所以我的印象是計數列表也沒有。它一直工作.. – Charlotte