如何覆盖compareTo(Java)

aLi*_*ind 6 java comparable

我是编程的初学者,我有两节课.头等舱是:

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.出了什么问题?

Rom*_*hyn 9

因为我看到你有比较方法的错误实现.你能更新一下吗?

@Override
public int compareTo(User user) {
  return Integer.compare(age, user.age);
}
Run Code Online (Sandbox Code Playgroud)