Java Stream: сортировка по одному из ненулевых полей даты - PullRequest
0 голосов
/ 25 мая 2018

У меня есть объект с несколькими полями даты date1, date2 и date3.date1 не равно нулю, поскольку две другие даты могут быть обнуляемыми.Я хочу отсортировать список этих объектов со следующим правилом

  1. Если date2 равно нулю, используйте date1, в противном случае используйте date2
  2. Сравните выходные данные шага 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)
        );

В настоящее время яЯ делаю это с помощью потока.

  1. Сортировка объектов с датой3 и получение объекта максимальной даты
  2. Сортировка объектов с датой 2 и получение объекта максимальной даты
  3. Если шаг 2результат равен нулю, сортируйте объекты, имеющие дату1 и получающие максимальный объект даты
  4. Сравните выходные данные шага 1 и шага 2/3 и сортируйте

Есть ли лучший и более короткий способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...