您可以解析数据并使用Collections#sort。你的类可以定义使用Comparable
和情况下,如果要排序,然后按降序一些自然排序只是通过Comparator.reverseOrder()作为第二对Arg的Collections#sort
这样
import java.text.ParseException;
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 DateSorter {
static class Entry implements Comparable<Entry> {
String id;
int num;
Date date;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
public Entry(String id, int num, String date) throws ParseException {
this.id = id;
this.num = num;
this.date = sdf.parse(date);
}
@Override
public int compareTo(Entry o) {
return date.compareTo(o.date);
}
@Override
public String toString() {
return id + '\'';
}
}
public static void main(String[] args) throws ParseException {
String s1 = "a1 5 2014-12-05";
String s2 = "a2 10 2014-12-06";
String s3 = "a3 5 2014-12-04";
String[] split = s1.split(" ");
List<Entry> entries = new ArrayList<>();
entries.add(new Entry(split[0], Integer.parseInt(split[1]), split[2]));
split = s2.split(" ");
entries.add(new Entry(split[0], Integer.parseInt(split[1]), split[2]));
split = s3.split(" ");
entries.add(new Entry(split[0], Integer.parseInt(split[1]), split[2]));
Collections.sort(entries, new Comparator<Entry>() {
@Override
public int compare(Entry o1, Entry o2) {
return o2.compareTo(o1);
}
});
System.out.println(entries);
}
}
输出
[a2', a1', a3']
分割字符串,并比较根据规则。 – mic4ael 2014-12-06 23:18:02
@ mic4ael你能澄清更多?! – omarsafwany 2014-12-06 23:20:08
创建一个'Object'(是的,这就是'OO'中第一个'O'代表),它包含三个字段:一个String,一个int和一个LocalDate。然后'实现Comparable',你可以使用任意数量的方法来对'MyObject'的'Collection'进行排序。 –
2014-12-06 23:20:22