我想知道是否有一种方法可以连续比较2个ArrayLists,直到它们的大小相同或它们的元素相同。第一个ArrayList将有一组固定的元素(比方说5个元素)。第二个ArrayList将为空,并且每次用户交互时,元素将被添加到第二个ArrayList。当第二个ArrayList与第一个ArrayList具有相同的大小时,将进行比较以查看两个arrayLists是否相同。
我已经通过多种方式做到了这一点:
我使用嵌套循环来比较存储和播放的项目
public int compare(ImageView computer, ImageView player){
if(player == computer)
return 1;
else
return 2;
}
public void checkMatch(){
for(int x = 0; x < storedList.size(); x++){
for(int y = 0; y < playedList.size(); y++){
result = compare(storedList.get(x), playedList.get(y));
if(result == 1)
//Do stuff
else
//End round
}
}
}
然后我尝试明确地执行此操作
if(playedList == storedList)
//do stuff
else
//do stuff
所有这一切都可行,但我不知道在哪里调用这个代码来实际等待所有用户输入完全完成。在此先感谢您的帮助。
答案 0 :(得分:3)
只需对您的代码发表一些评论:
if(playedList == storedList)
不会做你期望的事。 ==仅当引用相同时才为true,而不是对象相等。您应该使用if(storedList.equals(playedList))
代替。
我不确定你是否需要首先检查大小(无论如何都是在equals方法中完成)并且代码不会更清晰。
答案 1 :(得分:1)
您可以在保存第二个列表项目
的内部按钮点击功能中查看btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(secondArrayList.size()==5){
compare(); //Call compare method here
}
}
});
答案 2 :(得分:0)
public int searchlist(ImageView computer){
for(int x = 0; x < storedList.size(); x++){
result = compare(storedList.get(x), computer);
}
}
return result;
}
public void checkMatch(){
for(int y = 0; y < playedList.size(); y++){
result = searchlist(playedList.get(y));
if(result == 1)
//Do stuff
else
//End round
}
}
答案 3 :(得分:0)
您的比较方法应如下所示 获取2张图片ID然后进行比较,
public int compare(ImageView computer, ImageView player) {
if (player.getId() == computer.getId())
return 1;
else
return 2;
}