Порядок по умолчанию Date
будет помещать более новые даты после более старых дат, поэтому самые старые даты будут в начале вашего списка, а самые новые даты - в конце. По моему мнению, Comparators
всегда было трудно читать, поэтому я переключился на использование Ordering
, которые реализуют Comparator
немного чище. Например, ваш Comparator
может быть записан так:
Ordering<SomeObject> order = Ordering.natural().onResultOf(new Function<SomeObject, Date>() {
public Date apply(SomeObject object) {
return object.getDate();
}
});
Comparator<SomeObject> comparator = order; // Ordering implements Comparable so this would be legal to do
Collections.sort(someList, order);
Компаратор порядка, созданный этим кодом, будет сортировать объекты SomeObject на основе их Date
, используя естественный порядок Date
. Но что делает Ordering
действительно хорошим, так это то, что некоторые дополнительные методы изменяют порядок без необходимости писать какую-либо логику, например, чтобы изменить порядок дат от самых новых к самым старым, вам просто нужно добавить вызов reverse():
Ordering<SomeObject> order = Ordering.natural().reverse().onResultOf(new Function<SomeObject, Date>() {
public Date apply(SomeObject object) {
return object.getDate();
}
});
person
Yanamon
schedule
09.04.2010