Java 8 排序对象列表

Java 8 sort list of objects

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

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

那我做错了什么?

更容易写成:

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

sort 有一个 void return 类型,所以基本上做一个 :

return mergedUsers;

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

希望对您有所帮助。