Список сортировки объектов Java 8

Я пытаюсь отсортировать свой список объектов следующим образом:

List<UsersDataFoundTo> mergedUsers = mergeUsersFound(ldapUsers, foundUsers);
return mergedUsers.sort((UsersDataFoundTo h1, UsersDataFoundTo h2) -> h1.getLastName().compareTo(h2.getLastName()));

и в операторе возврата я получаю сообщение об ошибке:

Incompatible types.
Required: java.util.List<UsersDataFoundTo>
Found:void

Что я тогда делаю не так?


person Maciej Miśkiewicz    schedule 29.01.2019    source источник
comment
sort не имеет возвращаемого значения.   -  person Eran    schedule 29.01.2019
comment
Как говорит @Eran, отсортируйте его, а затем верните список.   -  person aran    schedule 29.01.2019
comment
Возможный дубликат найдены несовместимые типы: void, что не так?   -  person Ole V.V.    schedule 29.01.2019


Ответы (2)


Гораздо проще было бы написать так:

mergedUsers.sort(Comparator.comparing(UsersDataFoundTo::getLastName))

И sort имеет тип возвращаемого значения void, поэтому в основном выполните:

return mergedUsers;
person Eugene    schedule 29.01.2019

Я думаю, что для повторного использования класс UsersDataFoundTo должен реализовывать Comparable и переопределять функцию compareTo.

class UsersDataFoundTo implements Comparable<UsersDataFoundTo> {
    private String lastNam;

    public String getLastNam() {
        return lastNam;
    }

    public void setLastNam(String lastNam) {
        this.lastNam = lastNam;
    }

    @Override
    public int compareTo(UsersDataFoundTo other) {
        return getLastNam().compareTo(other.getLastNam());
    }
}

Затем вы можете использовать утилиту для сбора данных, чтобы отсортировать его следующим образом:

List<UsersDataFoundTo> mergedUsers = //...
java.util.Collections.sort(mergedUsers);

Я надеюсь, что это поможет.

person Thuong Vo    schedule 29.01.2019
comment
А если он передумает и попытается сравнить по другому свойству UsersDataFoundTo !! - person Abdelghani Roussi; 29.01.2019