我正在尝试在TreeSet中插入多个对象。问题是一个对象可以很好地插入,但是当我插入第二个对象并尝试查看两个对象时,我两次获得了第二个对象。如何防止我的旧价值观被替换。
这是我的POJO
public Class Question implements Comparable<Question>
{
.....
public int compareTo(Question q) {
if(vote>q.vote)
return -1;
else
return 1;
}
这是将对象插入treeSet的函数
public void save(String ques, String sessionId, Question question)
{
question.setQuesId(++quesId);
question.setQues(ques);
question.setSessionId(sessionId);
question.setVote(0);
setDemo.add(Question);
}
注意:“ setDemo”是我的treeSet对象
任何建议都值得赞赏。 谢谢
答案 0 :(得分:1)
首先,您的比较者应处理票数相等的情况。
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