[英]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.