[英]Creating New Comparator for TreeSet in Java
我有一个名为User的用户定义类。 此类实现可比较的类,并具有数据字段ID号,关注者和关注者。
我想对TreeSet中的元素进行排序,以使关注者最多的用户排在第一位,关注者最少的用户排在最后。 如果两个用户的关注者数量相同,则根据该用户关注的人数进行排序。 如果他们跟随的人数相同,则根据ID号进行排序。
class User implements Comparable<User>
{
private int userId;
private ArrayList<User> following;
private ArrayList<User> followers;
Set<User> sortingSet = new TreeSet<User>();
}
我还实现了compareTo方法
public int compareTo(User other)
{
if(this.followers.size() > other.followers.size())
return -1;
if(this.followers.size() < other.followers.size())
return 1;
if(this.following.size() > other.following.size())
return -1;
if(this.following.size() < other.following.size())
return 1;
if(this.userId < other.userId)
return -1;
if(this.userId > other.userId)
return 1;
return 0;
}
当我添加到TreeSet时,它只是基于userId进行排序。
编辑:感谢您的帮助,到目前为止,我已经对代码进行了一些更改。 我删除了一些多余的if语句。 我还实现了compareTo方法,但问题仍然存在。 我已经写过equals()和hashcode()方法。
EDIT2:再次感谢大家的帮助。 我已经解决了这个问题,这与初始化跟随者和跟随ArrayLists的方式有关。 我将此失误归咎于我的睡眠不足。
您尚未创建比较器。 您已经创建了一个称为Comp
的东西, 可以与用户进行比较 。
比较器是比较两件东西的东西 。 比较能力是可以将自己与事物进行比较的事物。
Comparable.compareTo
接受一个参数。 Comparator.compare
具有两个参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.