如何根据java中的Enum字段对一组对象进行排序



猜测我们有类似的枚举

enum Role{ MANAGER, ADMIN, USER }

我们还有

public class User{
String userName;
Role userRole;
}

然后我们有一组用户。我想根据角色枚举对此用户集进行排序。具有MANAGER角色的用户必须排在第一位,而具有USER角色的用户则必须排在集合的末尾。

假设您有一个名为yourList的列表中的值。当然,如果更适合您的需求,您可以直接添加到集合中。

SortedSet<User> set = new TreeSet<User>(Comparator.comparing(User::userRole)
.thenComparing(User::userName));
set.addAll(yourList)

使User类实现Comparable接口,如下所示:

public class Test {
public static void main(String[] args) throws Exception {
Set<User> set = new TreeSet<>();
set.add(new User("a", Role.USER));
set.add(new User("b", Role.MANAGER));
set.add(new User("c", Role.ADMIN));

System.out.println(set);
}
}
enum Role{ MANAGER, ADMIN, USER }
class User implements Comparable<User> {
String userName;
Role userRole;

public User(String name, Role role) {
this.userName = name;
this.userRole = role;
}

@Override
public int compareTo(User o) {

return this.userRole.compareTo(o.userRole);
}

public String toString() {
return this.userName;
}
}

输出:

[b, c, a]