java 对List<Map<String, Object>> 进行排序
比如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按降序排序,求大神解答。 感激不尽! list java object
[解决办法]
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());
}
}
}
}
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;
}
}
}