Java 8对象排序列表

时间:2019-01-29 09:36:29

标签: java sorting java-8 incompatibletypeerror

我正在尝试对这样的对象列表进行排序:

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

在return语句上我得到一个错误:

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

那我该怎么办?

2 个答案:

答案 0 :(得分:5)

写起来容易得多:

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

sort的返回类型为void,因此基本上是一个:

return mergedUsers;

答案 1 :(得分:2)

对于可重用,我认为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);

我希望有帮助。