Прежде всего, ваш компаратор должен обработать случай, когда голоса равны.
public int compareTo(Question q) {
if(vote>q.vote) {
return -1;
} else if (vote<q.vote){
return 1;
} else {
return 0;
}
}
Во-вторых, убедитесь, что вы правильно переопределяете equals
в Question
.
Если метод compareTo
возвращает 0, а equals
возвращает true, TreeSet переопределит ваше значение, так как обнаружит два значения как дубликаты.В противном случае вы не должны получать никаких замен.
Хотя TreeSet
не использует hashCode
для внутреннего использования, я бы также предложил переопределить это, поскольку вы можете изменить реализацию с TreeSet
на HashSet
в будущем.