У меня есть объект с несколькими полями даты date1
, date2
и date3
.date1
не равно нулю, поскольку две другие даты могут быть обнуляемыми.Я хочу отсортировать список этих объектов со следующим правилом
- Если
date2
равно нулю, используйте date1
, в противном случае используйте date2
- Сравните выходные данные шага 1 с
date3
и сортировка по убыванию.
Ниже мой бин.
class obj {
private Date date1;
private Date date2;
private Date date3;
obj(Date date1, Date date2, Date date3) {
this.date1 = date1;
this.date2 = date2;
this.date3 = date3;
}
public Date getDate1() {
return date1;
}
public void setDate1(Date date1) {
this.date1 = date1;
}
public Date getDate2() {
return date2;
}
public void setDate2(Date date2) {
this.date2 = date2;
}
public Date getDate3() {
return date3;
}
public void setDate3(Date date3) {
this.date3 = date3;
}
}
И мой список для сортировки будет выглядеть как
List<obj> aList = Arrays.asList(
new obj(parseDate("1/1/2018"), null, null),
new obj(parseDate("4/4/2018"), null, parseDate("6/6/2018")),
new obj(parseDate("7/7/2018"), parseDate("8/8/2018"), null)
);
В настоящее время яЯ делаю это с помощью потока.
- Сортировка объектов с датой3 и получение объекта максимальной даты
- Сортировка объектов с датой 2 и получение объекта максимальной даты
- Если шаг 2результат равен нулю, сортируйте объекты, имеющие дату1 и получающие максимальный объект даты
- Сравните выходные данные шага 1 и шага 2/3 и сортируйте
Есть ли лучший и более короткий способ сделать это?