您可以解析數據並使用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