TreeSet 用新值替换旧值
TreeSet replacing old values by New values
我正在尝试在 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对象
如有任何建议,我们将不胜感激。
谢谢
首先,你的比较器应该处理票数相等的情况。
public int compareTo(Question q) {
if(vote>q.vote) {
return -1;
} else if (vote<q.vote){
return 1;
} else {
return 0;
}
}
其次,确保在 Question
中正确覆盖 equals
。
如果 compareTo
方法 returns 0 和 equals
returns 都为真,TreeSet 将覆盖您的值,因为它将检测到这两个值是重复的。否则,您不应该获得任何替代品。
虽然 TreeSet
在内部不使用 hashCode
,但我建议也覆盖它,因为您可能希望将实现从 TreeSet
更改为 HashSet
未来。
我正在尝试在 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对象
如有任何建议,我们将不胜感激。 谢谢
首先,你的比较器应该处理票数相等的情况。
public int compareTo(Question q) {
if(vote>q.vote) {
return -1;
} else if (vote<q.vote){
return 1;
} else {
return 0;
}
}
其次,确保在 Question
中正确覆盖 equals
。
如果 compareTo
方法 returns 0 和 equals
returns 都为真,TreeSet 将覆盖您的值,因为它将检测到这两个值是重复的。否则,您不应该获得任何替代品。
虽然 TreeSet
在内部不使用 hashCode
,但我建议也覆盖它,因为您可能希望将实现从 TreeSet
更改为 HashSet
未来。