如何使用相反顺序的日期键对地图进行排序?

时间:2014-09-08 12:02:47

标签: java

我有一个哈希映射,其中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"

请帮我解决这个问题。

感谢。

3 个答案:

答案 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);
}