Пользовательский класс, называемый MyCustomClass
, обладает свойством joda LocalDateTime
. Мне нужно создать класс java.util.Comparator
, чтобы сравнить экземпляры MyCustomClass
от их TimeStamp
объекта, который имеет тип LocalDateTime
. Я прочитал несколько сообщений об этом (включая this one), и я пробовал все методы, но ни один из методов, показанных в ответах, не работает. Например, следующие несколько подходов бросить ошибки компиляции:Java-компаратор для двух LocalDateTimes
import java.time.temporal.ChronoUnit;
import java.util.Comparator;
import org.joda.time.DateTime;
import org.joda.time.Duration;
import org.joda.time.Period;
import my.app.model.MyCustomClass;
public class MyCustomClassComparator implements Comparator<MyCustomClass>{
public int compare(MyCustomClass mcc1, MyCustomClass mcc2) {
//this first attempt throws a return type error for the method.
return Period.fieldDifference(mcc2.getTimestamp(), mcc1.getTimestamp());
//This next attempt says that LocalDateTimes are not valid arguments
Duration.between(mcc2.getTimestamp(), mcc1.getTimestamp());
//The next approach also says LocalDateTimes are not valid arguments.
DateTime.parse(mcc2.getTimestamp()), mcc1.getTimestamp()).getSeconds();
//This boilerplate approach says the minus sign is not valid for LocalDateTime
return mcc1.getTimestamp() - mcc2.getTimestamp();
}
}
я намерен использовать это в другом месте в коде, как:
List<MyCustomClass> mccs = new ArrayList<MyCustomClass>();
// Sort by time stamp:
Collections.sort(mccs, new MyCustomClassComparator());
Как написать Comparator
класс для сравнения экземпляров MyCustomClass
на основе их Joda LocalDateTime
Недвижимость?
Не '' LocalDateTime' уже Comparable'? Разве вы не можете использовать 'mcc1.compareTo (mcc2)'? – MadProgrammer
Проверьте это: http://stackoverflow.com/questions/13764106/comparing-two-dates-using-joda-time –
Или удалите «Компаратор» в целом ... – MadProgrammer