Если вы работаете на Java 8, вы можете использовать:
List<Contest> sorted = contests.stream()
.sorted(Comparator.comparing(contest -> contest.getStartTime().getTime(), Comparator.nullsFirst(Comparator.naturalOrder())))
.collect(Collectors.toList());
Не зная подробностей о вашем типе данных startTime, предполагая, что time
математически сопоставимо с вашим кодом, полнота кода приведена ниже. , Отрегулируйте в соответствии с вашими потребностями.
class Sorting {
public static void main(String[] args) {
List<Contest> contests = new ArrayList<>();
contests.add(new Contest(new TimeHolder(1)));
contests.add(new Contest(new TimeHolder(3)));
contests.add(new Contest(new TimeHolder(2)));
List<Contest> sorted = contests.stream()
.sorted(Comparator.comparing(contest -> contest.getStartTime().getTime(), Comparator.nullsFirst(Comparator.naturalOrder())))
.collect(Collectors.toList());
sorted.forEach(contest -> System.out.println(contest.getStartTime().getTime()));
}
static class Contest {
TimeHolder startTime;
public Contest(TimeHolder startTime) {
this.startTime = startTime;
}
public TimeHolder getStartTime() {
return startTime;
}
}
static class TimeHolder{
int time;
public TimeHolder(int time) {
this.time = time;
}
public int getTime() {
return time;
}
}
}
Выход:
1
2
3