2013-01-04 44 views
-5

排序的HashMap我已經哈希映射的ArrayList的在我所喜歡的名字,PHONENO,日期,年齡鍵....根據一個關鍵

我想根據日期字段HashMap的排序。

如果我使用LinkedHashMap,那麼它也沒有用,因爲我以隨機方式獲取值。

我不能使用一個對象而不是HashMap,因爲我不知道我會得到多少條目。我正在動態地放置鍵和值。

+0

你的意思是你想根據某個日期鍵下的每個hashmap的值對hashmaps數組進行排序? – radai

+0

爲什麼有一組地圖?爲什麼不用一個地圖呢?你爲什麼不使用'SortedMap'? – fge

+1

'Collections.sort(List,Comparator)'是你將要使用的。 –

回答

5

您需要製作一個比較器,爲哈希映射中的「Date」值選取值,然後使用該比較值進行比較。

Collections.sort(list, new Comparator<Map<String, Object>>() { 
     public int compare(Map<String, Object> map1, Map<String, Object> map2) { 
      Date date1 = (Date) map1.get("Date"); 
      Date date2 = (Date) map2.get("Date"); 
      return date1.compareTo(date2); 
     } 
    }); 

這嚴重聞起來像對象拒絕。爲什麼不爲這個數據創建一個真實的對象?如果這種排序經常出現,你甚至可以使其成爲可比較的。

+0

我不能使用對象而不是HashMap,因爲我不知道我會得到多少條目。我動態地把鍵和值 – vikas27

+0

你可以請告訴我一件事,如果我想根據名字和日期進行排序。我的意思是我可以有不同日期的同名多個條目。所以我想分類acc。迄今爲止的特定名稱。 – vikas27

+0

然後只調整比較器;如果compareTo的結果爲0,則對第二個字段執行相同的操作。你可以繼續,只要你喜歡。 –