2012-08-09 28 views
-1

一個List <地圖<字符串,對象>>我越來越如何我有點在Java

List<Map<String,Object>> listMap = [ 
    {employee=17, fromdate=2010-08-01 00:00:00.0, full_inc=25572.0000}, 
    {employee=17, fromdate=2010-09-01 00:00:00.0, full_inc=28347.0000}, 
    {employee=17, fromdate=2010-10-01 00:00:00.0, full_inc=37471.0000}, 
    {employee=17, fromdate=2011-02-01 00:00:00.0, full_inc=47033.0000}, 
    {employee=17, fromdate=2011-07-01 00:00:00.0, full_inc=50592.0000} 
    ] 

誰能幫助我我如何基於高量低量full_inc排序地圖的這個名單in java

+0

我要扔出去,你可能想使用某種類型的一個SortedMap ,但是如何對它進行排序並超出我的範圍 – MadProgrammer 2012-08-09 09:17:33

回答

2

您可以使用自定義比較器,但需要您的值(當前爲Object)才能實現Comparable。根據您的列表的當前聲明,你不能這樣做(你如何比較兩個隨機對象?):

List<Map<String,Comparable>> listMap = ... 
Collections.sort(listMap, new Comparator<Map<String, Comparable>>() { 

    @Override 
    public int compare(Map<String, Comparable> m1, Map<String, Comparable> m2) { 
     return m2.get("full_inc").compareTo(m1.get("full_inc")); //descending 
    } 
}); 

注意:您需要添加錯誤檢查。

0

你可以在你自己的比較器中使用Collections.sort()。

1

我會

  • 創建自定義類的映射對象。
  • 讓您的自定義類實現可比
  • 使用Collections.sort()
1

解決方案1是將要排序的所有條目在TreeMap<K,V>TreeMap doc)其中K是你的標準在其上排序(這裏是full_inc),V是你想要分類的東西。然後,按照您的K的compare()順序迭代TreeMap.entrySet。

解決方案2將使用full_inc創建您自己的Comparable類,以與同一類的對象進行比較,並使用Collections.sort

解決方案3幾乎相同,2的基礎上,利用Collections.sort與比較您的自定義類的兩個實例的比較他們的getFullInc()