我是编程的初学者,我有两个班级。第一类是:
public class User implements Comparable<User>
带有字段 int age
,接口 Comparable 的构造函数和重写方法:
@Override
public int compareTo(User user) {
return user.age >= age ? -1 : 0;
}
第二类是 public class SortUser
具有从列表创建集合的方法:
public Set<User> sort(List<User> list) {
Set<User> result = new TreeSet<>();
for (User user : list) {
result.add(user);
}
return result;
}
在我看来,应该对 Set 中的所有 User
对象进行排序,但是当我用 3 User
对象创建一个列表时……
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);
(现在列表的顺序是: 312
)…并从该列表中创建了一个 Set
( TreeSet
SortUser sortUser = new SortUser();
Set<User> set = sortUser.sort(list);
最后我有一个 set
这个命令: 13
,这意味着只有两个对象在 set
出了什么问题?
原文由 aLittleMind 发布,翻译遵循 CC BY-SA 4.0 许可协议
如我所见,您对比较方法的实现有误。你能把它更新到吗?