Maciej Miśkiewicz
Maciej Miśkiewicz

Reputation: 412

Java 8 sort list of objects

I am trying to sort my list of objects like this:

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

and on the return statement I get an error:

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

What do I do wrong then?

Upvotes: 2

Views: 106

Answers (2)

Thuong Vo
Thuong Vo

Reputation: 101

For reusable, I think the class UsersDataFoundTo should implements Comparable and override compareTo function.

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());
    }
}

Then you can use a collection utility to sort it like this:

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

I hope this help.

Upvotes: 2

Eugene
Eugene

Reputation: 120858

Much easier would be to write is as:

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

And sort has a void return type, so basically do a :

return mergedUsers;

Upvotes: 6

Related Questions