排序么?
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
public class Test {
public static void main(String args[]) {
System.out.println("字符串比较");
test1();
System.out.println("Date比较");
test2();
}
private static void test1() {
List<String> data = init();
System.out.println("排序前" + data);
Collections.sort(data, new Comparator<String>() {
public int compare(String o1, String o2) {
String[] arr1 = o1.split("_");
String[] arr2 = o2.split("_");
int comparator = toInt(arr1[0], -1) - toInt(arr2[0], -2);
if (comparator == 0) {
comparator = toInt(arr1[1], -1) - toInt(arr2[1], -2);
if (comparator == 0) {
return toInt(arr1[2], -1) - toInt(arr2[2], -2);
}
}
return comparator;
}
});
System.out.println("排序后" + data);
}
private static void test2() {
List<String> data = init();
System.out.println("排序前" + data);
final Format f = new SimpleDateFormat("yyyy-MM-dd");
Collections.sort(data, new Comparator<String>() {
public int compare(String o1, String o2) {
Date d1;
Date d2;
try {
d1 = (Date) f.parseObject(o1);
d2 = (Date) f.parseObject(o2);
return d1.compareTo(d2);
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
});
System.out.println("排序后" + data);
}
private static List<String> init() {
List<String> data = new ArrayList<String>();
data.add("2013-3-3");
data.add("2012-4-4");
return data;
}
private static int toInt(String str, int delVal) {
try {
return Integer.parseInt(str);
} catch (Exception e) {
return delVal;
}
}
}
字符串比较
排序前[2013-3-3, 2012-4-4]
排序后[2012-4-4, 2013-3-3]
Date比较
排序前[2013-3-3, 2012-4-4]
排序后[2012-4-4, 2013-3-3]