连续比较2个ArrayList的大小和元素

时间:2015-05-11 07:10:37

标签: java android loops arraylist

我想知道是否有一种方法可以连续比较2个ArrayLists,直到它们的大小相同或它们的元素相同。第一个ArrayList将有一组固定的元素(比方说5个元素)。第二个ArrayList将为空,并且每次用户交互时,元素将被添加到第二个ArrayList。当第二个ArrayList与第一个ArrayList具有相同的大小时,将进行比较以查看两个arrayLists是否相同。

我已经通过多种方式做到了这一点:

  1. 我使用嵌套循环来比较存储和播放的项目

    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
            }
        }
    }
    
  2. 然后我尝试明确地执行此操作

    if(playedList == storedList)
        //do stuff
    else
        //do stuff
    
  3. 所有这一切都可行,但我不知道在哪里调用这个代码来实际等待所有用户输入完全完成。在此先感谢您的帮助。

4 个答案:

答案 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;
}