我是编程的初学者,我有两节课.头等舱是:
public class User implements Comparable<User>
Run Code Online (Sandbox Code Playgroud)
with field int age,constructor和overrided interface of interface Comparable:
@Override
public int compareTo(User user) {
return user.age >= age ? -1 : 0;
}
Run Code Online (Sandbox Code Playgroud)
第二类是
public class SortUser使用从List创建Set集合的方法:
public Set<User> sort(List<User> list) {
Set<User> result = new TreeSet<>();
for (User user : list) {
result.add(user);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
在我看来,UserSet 中的所有对象都应该排序,但是当我创建一个包含3个User对象的List时......
User a = new User(1);
User b = new User(2);
User c = new User(3);
List<User> list = new ArrayList<>();
list.add(c);
list.add(a);
list.add(b);
Run Code Online (Sandbox Code Playgroud)
(现在列表的顺序是:312)...并从该列表中创建一个Set(TreeSet):
SortUser sortUser = new SortUser();
Set<User> set = sortUser.sort(list);
Run Code Online (Sandbox Code Playgroud)
最后我有一个set订单:13它意味着只有两个对象set.出了什么问题?
因为我看到你有比较方法的错误实现.你能更新一下吗?
@Override
public int compareTo(User user) {
return Integer.compare(age, user.age);
}
Run Code Online (Sandbox Code Playgroud)