【发布时间】:2014-08-20 20:30:41
【问题描述】:
我正在使用 ArrayList 来保存问题及其答案。 ArrayList 由具有 Question No 的 Answer Class 和 answers_marked 的 ArrayList 组成,如下所示:
private class Answer {
private long question_no;
private ArrayList<long> answer;
public boolean equals(Object o) {
if (o instanceof Answer)
if (((Answer)o).question_no == this.question_no)
return true;
return false;
}
}
public ArrayList<Answer> answers = new ArrayList<Answer>();
现在,当用户更改他的答案时,我想查看答案数组列表并检查答案中是否已经存在 question_no。如果确实如此,则更新答案已更改的答案值。我正在尝试使用 contains 方法来检查 question_no 是否已经存在,但它总是返回 false。我在这里做错了什么? 哪种其他数据结构最适合执行此操作?
我正在使用 answers.contains(new Answer(10,20)) 来查看 question_no 10 是否已经回答。
【问题讨论】:
-
应该是
ArrayList<Long>? -
我没有看到你在哪里使用了 contains()。但我还是会说:为什么不使用一套。而且你必须在 if 子句中使用括号。你应该定义getter/setter。
-
当用户更改他的答案时,我想查看答案数组列表并检查答案中是否已经存在 question_no - 我非常担心您的设计..
-
使用“long”而不是“Long”,它甚至不应该编译。
-
contains()与您的equals()实现配合得很好,如you can see here。您的问题一定出在其他地方。