ArrayList中的contains()方法,Java

ArrayList中的contains()方法,Java,java,arraylist,contains,Java,Arraylist,Contains,我正在使用ArrayList保存问题及其答案。ArrayList由答案类和答案ArrayList组成,答案类的问题号和答案列表标记如下: private class Answer { private long question_no; private ArrayList<long> answer; public boolean equals(Object o) { if (o instanceof Answer) i

我正在使用ArrayList保存问题及其答案。ArrayList由答案类和答案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>();
private类答案{
私人长问题(否);
私人ArrayList回答;
公共布尔等于(对象o){
if(o应答实例)
如果((回答)o).问题编号==这个.问题编号)
返回true;
返回false;
}
}
public ArrayList answers=new ArrayList();
现在,当用户更改答案时,我想查看答案列表,检查答案中是否已经存在问题。\u no。如果有,则更新已更改答案的答案值。我试图使用contains方法检查问题是否已经存在,但它总是返回false。我做错了什么? 其他哪种数据结构最适合这样做


我正在使用answers.contains(新答案(10,20))来查看第10个问题是否已经回答。

如果你有一个数组列表,你不应该做
答案。contains(10)
-这不起作用。。10是一个整数,在
equals()
中,如果
o
不是
答案,则返回
false

相反,尝试:

Answer answer1 = new Answer(1);
Answer answer2 = new Answer(2);

answers.add(answer1);

answers.contains(answer1) ;//= true
answers.contains(answer2) ;//= false
answers.contains(10) ;//= false

应该是
ArrayList
?我看不出您在哪里使用了contains()。但我还是会说:为什么不使用一套呢。你必须在if子句中使用括号。您应该定义getter/setter。当用户更改其答案时,我想查看答案列表,检查答案中是否已经存在问题\u no-我非常担心您的设计..使用“long”而不是“long”,它甚至不应该编译。
contains()
equals()配合很好
实现,如图所示。你的问题一定在其他地方。
答案。包含(10)
显然是某种打字错误,因此此答案不再有效。我正在使用answers.contains(新答案(10,20))来查看10号问题是否已经被回答