Java 8 сортировать список объектов - PullRequest
0 голосов
/ 29 января 2019

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

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

Что я тогда делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 29 января 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);

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

0 голосов
/ 29 января 2019

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

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

И sort имеет тип возврата void, поэтому в основном делаем:

return mergedUsers;
...