2014-06-19 62 views
0

在我的代碼中我有ArrayList<TreeMap<String, Object>>。什麼TreeMap將是關鍵和價值。有一個名爲的密鑰sent_date,其格式爲yyyy-MM-DD HH:MM:SS。我找不到排序此列表的方法...有人可以幫忙嗎?謝謝。如何按日期排序ArrayList的TreeMap作爲值

+2

究竟如何你想你列表排序?你已經嘗試了什麼? –

+0

你是說每個'TreeMap'元素只包含1個條目嗎?爲什麼不直接使用'TreeMap'並放棄'ArrayList'? – jpmc26

+1

番石榴表會是一個更好的數據結構嗎? http://docs.guava-libraries.googlecode.com/git-history/v17.0/javadoc/com/google/common/collect/Table.html –

回答

1

您可以使用Collections.sort(list, comparator),您必須實施Comparator<Map<String,?>>才能執行所需的操作(即從兩張地圖中檢索sent_date並比較這些地圖)。

+1

可能的重複我還會對任何使用新Java8功能發佈簡潔實現的人+1進行重複。現在這一定是可能的,沒有太多的樣板。 – Thilo

+0

比較器是我不明白的部分...請給我更多的例子嗎? – user1865027

+0

看看這個例子:http://stackoverflow.com/a/10471029/14955 – Thilo

1

在Java 8,這將是(對那種修改列表):

DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); 
list.sort(Comparator.comparing(m -> LocalDateTime.parse(m.get("sent_date"), format))); 

或者,如果你想保持原來的列表:

newList = list.stream() 
       .sorted(Comparator.comparing(...)) 
       .collect(Collectors.toList()); 
+0

當然,它看起來像日期格式需要一些工作。 –

+0

humm ...我有java7 :( – user1865027