我有一个哈希映射,其中Date存储为键,数组列表是一个值。 我想对地图进行排序,以便最后显示最新日期和旧日期。
例如,我们有4个日期作为关键,例如" 01-09-2014"," 02-09-2014"," 31-08-2014" " 30-08-2014&#34 ;;
因此输出应该是" 02-09-2014"," 01-09-2014"," 31-08-2014"," 30-08-2014"
请帮我解决这个问题。
感谢。
答案 0 :(得分:2)
试试这个
public static void main(String[] args) {
Map<Date, Integer> m = new HashMap<Date, Integer>();
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
try {
m.put(dateFormat.parse("31-05-2011").getTime(), 67);
m.put(dateFormat.parse("01-06-2011").getTime(), 89);
m.put(dateFormat.parse("10-06-2011").getTime(), 56);
m.put(dateFormat.parse("25-05-2011").getTime(), 34);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Map<Date, Integer> m1 = new TreeMap(m, new Comparator<Date>() {
@Override
public int compareTo(Date a, Date b) {
return -a.compare(b);
}
});
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
for (Map.Entry<Date, Integer> entry : m1.entrySet()) {
System.out.println(df.format(entry.getKey()));
}
}
答案 1 :(得分:1)
使用TreeMap
并定义适当的Comparator
反向事项(例如:(Date a, Date b) -> -a.compare(b)
);
答案 2 :(得分:1)
static void sortMap() throws Exception{
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Map<Date, Integer> map = new TreeMap<Date, Integer>(new Comparator<Date>() {
public int compare(Date date1, Date date2) {
return date2.compareTo(date1);
}
});
map.put(dateFormat.parse("01-09-2014"), 1);
map.put(dateFormat.parse("02-09-2014"), 2);
map.put(dateFormat.parse("31-08-2014"), 3);
map.put(dateFormat.parse("30-08-2014"), 4);
}