按照一个属性对集合进行排序

3
我有一组类似这样的用户。
Set<User> users = new HashSet<User>();

用户包含名字、姓氏和年龄。我需要按照名字对用户进行排序。如何实现这一点?


Collections.sort(users, new Comparator<User>() { // 实现 }); - Atuos
3
我认为Collections.sort不能用于Sets,只能用于Lists。你可以使用"TreeSet"代替HashSet,并在构造函数中提供一个比较器。当你遍历集合时,它将总是有序的。 - BretC
布雷特是正确的。Collections.sort不适用于集合。 - Usr1123
2个回答

2
你不能这样做。HashSet(就像HashMap一样)是无序的。
可以使用TreeSet代替。它会根据元素的自然排序或使用比较器来排序。

0
你可以使用类似这样的代码:
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接