比如list中的值:{FINISH_DATA=2014-01-11, BEGIN_DATA=2014-01-05}{FINISH_DATA=2013-03-16, BEGIN_DATA=2013-03-10}
{FINISH_DATA=2013-03-09, BEGIN_DATA=2013-03-03}
{FINISH_DATA=2013-01-19, BEGIN_DATA=2013-01-13}
{FINISH_DATA=2013-01-12, BEGIN_DATA=2013-01-06}
{FINISH_DATA=2013-01-05, BEGIN_DATA=2012-12-30}
{FINISH_DATA=2012-01-07, BEGIN_DATA=2012-01-01}
{FINISH_DATA=2013-03-02, BEGIN_DATA=2013-02-24} 
对 BEGIN_DATA按降序排序,求大神解答。  感激不尽!listjavaobject

解决方案 »

  1.   

    package org.vicky.test;import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Comparator;
    import java.util.Date;
    import java.util.Map;public class TestComparator implements Comparator<Map<String, String>> { @Override
    public int compare(Map<String, String> o1, Map<String, String> o2) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Date d1 = null;
    Date d2 = null;
    for (String k : o1.keySet()) {
    try {
    d1 = format.parse(o1.get(k).substring(11));
    } catch (ParseException e) {
    e.printStackTrace();
    }
    }
    for (String k : o2.keySet()) {
    try {
    d2 = format.parse(o2.get(k).substring(11));
    } catch (ParseException e) {
    e.printStackTrace();
    }
    }
    if (d1.before(d2)) {
    return 1;
    } else if (d1.after(d2)) {
    return -1;
    } else {
    return 0;
    }
    }}package org.vicky.test;import java.util.ArrayList;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;public class Test {
    public static void main(String[] args) {
    List<Map<String, String>> list = new ArrayList<Map<String, String>>();
    Map<String, String> map1 = new HashMap<String, String>();
    map1.put("FINISH_DATA=2013-03-09", "BEGIN_DATA=2013-03-03");
    Map<String, String> map2 = new HashMap<String, String>();
    map2.put("FINISH_DATA=2013-01-19", "BEGIN_DATA=2013-01-13");
    Map<String, String> map3 = new HashMap<String, String>();
    map3.put("FINISH_DATA=2013-01-12", "BEGIN_DATA=2013-01-06");
    Map<String, String> map4 = new HashMap<String, String>();
    map4.put("FINISH_DATA=2013-01-05", "BEGIN_DATA=2012-12-30");
    list.add(map1);
    list.add(map2);
    list.add(map3);
    list.add(map4);
    Collections.sort(list, new TestComparator());
    for (Map<String, String> m : list) {
    for (Map.Entry<String, String> en : m.entrySet()) {
    System.out.println(en.getKey() + " , " + en.getValue());
    }
    }
    }
    }
      

  2.   

    楼上速度快啊,在我帮你做Demo的时候,给你提交了比较好的结果。不过我这里也做好了,不妨也贴出来,我Map里存的是String,不是Date,供楼主参考。
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;public class Demo {

    public static void main(String[] args) {
    List<Map<String, String>> list = new ArrayList<Map<String, String>>();
    Map<String, String> data1 = new HashMap<String, String>();
    Map<String, String> data2 = new HashMap<String, String>();
    Map<String, String> data3 = new HashMap<String, String>();
    data1.put("BEGIN_DATA", "2014-01-05");
    data2.put("BEGIN_DATA", "2014-01-01");
    data3.put("BEGIN_DATA", "2014-01-08");
    list.add(data1);
    list.add(data2);
    list.add(data3);

    // 排序前
    System.out.println("Before sort.");
    for (Map<String, String> m : list) {
    System.out.println(m.get("BEGIN_DATA"));
    }

    // 排序
    Collections.sort(list, new MapComparator());
    // 排序后
    System.out.println("After sort.");
    for (Map<String, String> m : list) {
    System.out.println(m.get("BEGIN_DATA"));
    }
    }

    static class MapComparator implements Comparator<Map<String, String>> { @Override
    public int compare(Map<String, String> o1, Map<String, String> o2) {
    // TODO Auto-generated method stub
    String b1 = o1.get("BEGIN_DATA");
    String b2 = o2.get("BEGIN_DATA");
    if (b2 != null) {
    return b2.compareTo(b1);
    }
    return 0;
    } }}