ArrayList中的contains()方法,Java
我正在使用ArrayList保存问题及其答案。ArrayList由答案类和答案ArrayList组成,答案类的问题号和答案列表标记如下: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
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号问题是否已经被回答