按其属性之一对集合进行排序

Sort a set by one of its attributes

我有一组这样的用户。

Set<User> users = new HashSet<User>();

用户包含名字、姓氏和年龄。我需要根据名字对用户进行排序。我怎样才能做到这一点?

你不能。 HashSet(如 HashMap)是无序的。

使用 TreeSet instead. It orders elements according to their natural ordering, or using an explicit comparator

你可以这样使用:

Comparator<User> firstNameComparator = new Comparator<User>() {
    @Override
    public int compare(User u1, User u2) {
        return u1.getFirstName().compareTo(u2.getFirstName());
    }
};

Set<User> usersSorted = new TreeSet<User>(firstNameComparator);
usersSorted.addAll(users);