猜测我们有类似的枚举
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]