自行选择某种set集合,保存5个人user对象,user类中有userid、username和score属性,并要求先按照score的降序,如果score相同再根据userid升序将这些键值对依次输出
时间: 2023-04-23 12:04:50 浏览: 83
可以选择TreeSet集合来保存5个人的user对象。在定义TreeSet时,需要传入一个Comparator对象,用于指定排序规则。可以自定义一个Comparator,按照题目要求先按照score的降序,如果score相同再根据userid升序排序。具体代码如下:
```
import java.util.Comparator;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
// 定义一个Comparator,按照score的降序,如果score相同再根据userid升序排序
Comparator<User> comparator = new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
if (o1.getScore() != o2.getScore()) {
return o2.getScore() - o1.getScore(); // score降序
} else {
return o1.getUserId() - o2.getUserId(); // userid升序
}
}
};
// 创建一个TreeSet,传入上面定义的Comparator
TreeSet<User> set = new TreeSet<>(comparator);
// 添加5个user对象
set.add(new User(1, "Tom", 80));
set.add(new User(2, "Jerry", 90));
set.add(new User(3, "Alice", 80));
set.add(new User(4, "Bob", 70));
set.add(new User(5, "David", 90));
// 输出排序后的结果
for (User user : set) {
System.out.println(user);
}
}
}
class User {
private int userId;
private String username;
private int score;
public User(int userId, String username, int score) {
this.userId = userId;
this.username = username;
this.score = score;
}
public int getUserId() {
return userId;
}
public String getUsername() {
return username;
}
public int getScore() {
return score;
}
@Override
public String toString() {
return "User{" +
"userId=" + userId +
", username='" + username + '\'' +
", score=" + score +
'}';
}
}
```
输出结果为:
```
User{userId=2, username='Jerry', score=90}
User{userId=5, username='David', score=90}
User{userId=1, username='Tom', score=80}
User{userId=3, username='Alice', score=80}
User{userId=4, username='Bob', score=70}
```