Java 比较2个ArrayList';s的大小和元素是连续的

Java 比较2个ArrayList';s的大小和元素是连续的,java,android,loops,arraylist,Java,Android,Loops,Arraylist,我想知道是否有一种方法可以连续比较两个ArrayList,直到它们的大小相同或元素相同。第一个ArrayList将有一组固定的元素(比如说5个元素)。第二个ArrayList将是空的,每个用户交互都会向第二个ArrayList添加一个元素。当第二个ArrayList与第一个ArrayList的大小相同时,将进行比较以查看两个ArrayList是否相同 我已经通过了很多方法来做到这一点: 我使用嵌套循环来比较存储和播放的项目 public int compare(ImageView compute

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

我已经通过了很多方法来做到这一点:

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

    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
            }
        }
    }
    
  • 所有这些都可能有效,但我不知道在哪里调用它,以便代码实际等待所有用户输入完全完成。提前感谢你的帮助


  • 您可以选中保存secondArraylist项的内部按钮单击功能

    btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                 if(secondArrayList.size()==5){
                      compare(); //Call compare method here
                  }
                }
            });
    

    您可以选中保存secondArraylist项的内部按钮单击功能

    btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                 if(secondArrayList.size()==5){
                      compare(); //Call compare method here
                  }
                }
            });
    

    只需对您的代码发表几点评论:

    if(playedList == storedList)
    
    不会做你想做的事仅当引用相同时才为真,而当对象相等时不为真。您应该使用
    if(storedList.equals(playedList))


    我不确定您是否需要首先检查大小(无论如何,它是在equals方法中完成的),如果没有代码,则会更干净。

    仅对代码进行一些注释:

    if(playedList == storedList)
    
    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
            }
    
    }
    
    不会做你想做的事仅当引用相同时才为真,而当对象相等时不为真。您应该使用
    if(storedList.equals(playedList))

    我不确定您是否需要先检查大小(无论如何都是用equals方法完成的),没有代码会更干净。

    public int searchlist(ImageView计算机){
    
    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
            }
    
    }
    
    对于(int x=0;x
    公共int搜索列表(ImageView计算机){
    对于(int x=0;x
    您的比较方法如下所示 获取两个图像ID,然后进行比较

    public int compare(ImageView computer, ImageView player) {
        if (player.getId() == computer.getId())
            return 1;
        else
            return 2;
    }
    

    您的比较方法如下所示 获取两个图像ID,然后进行比较

    public int compare(ImageView computer, ImageView player) {
        if (player.getId() == computer.getId())
            return 1;
        else
            return 2;
    }
    

    (…)我不知道在哪里调用它,让代码真正等待所有用户输入完全完成-您的问题的答案取决于您所说的用户输入的确切类型?言语的?触摸?加速计?等等。你试过Arrays.deepEquals()吗?还重写正在比较的类的equals方法。@MH。当一个ImageView(作为一个按钮被点击)是用户input@dora到目前为止,我还没有使用过deepEquals:(@Tobidae你怎么能像比较方法那样比较两个图像视图呢?我认为这是错误的。(…)我不知道在代码实际等待所有用户输入完全完成的情况下在哪里调用它-您的问题的答案取决于您所说的用户输入的确切类型?语言?触摸?加速计?等等。您是否尝试过数组。deepEquals()?还重写正在比较的类的equals方法。@MH.当单击ImageView(充当按钮)时,该用户input@dora到目前为止,我还从未有过这样的经历:(@Tobidae你怎么能像你在比较方法中那样比较两个图像视图?我想那是错误的。我想我可能必须这样做,直到我找到答案。谢谢。我想我可能必须这样做,直到我找到答案。谢谢。谢谢。我现在就去清理我的代码,这解释了很多其他事情。谢谢,我会去清理现在在我的代码中,这解释了很多其他的东西SAN Image View在某种程度上是一个对象,所以我想任何对象都可以进行比较,只要它们来自相同的类类型(字符串,It's,e.t.c)是的,它们是可以比较的。但是我不认为你上面写的比较会返回你想要的结果。图像视图在某种程度上是一个对象,所以我想任何对象都可以比较,只要它们来自相同的类类型(字符串,它是,e.t.c)是的,它们是可以比较的。但是我不认为你上面写的比较会返回你想要的结果。