【问题标题】:Comparing 2 ArrayList's size and elements continously连续比较 2 ArrayList 大小和元素
【发布时间】:2015-05-11 07:10:36
【问题描述】:

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

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

  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. 所有这些都可以工作,但我不知道在哪里调用它以使代码真正等待所有用户输入完全完成。提前感谢您的帮助。

【问题讨论】:

  • (...) 我不知道在哪里调用这个代码才能真正等待所有用户输入完成 - 你的问题的答案取决于你到底在谈论什么样的用户输入?口头?触碰?加速度计?以此类推。
  • 你试过 Arrays.deepEquals() 吗?还要覆盖您正在比较的类的 equals 方法。
  • @MH。当一个 ImageView(作为一个按钮被点击)那是用户输入
  • @dora 直到现在我还没有使用 deepEquals :(
  • @Tobidae 如何像在比较方法中那样比较两个图像视图?我认为这是错误的。

标签: java android loops arraylist


【解决方案1】:

您的代码中只有几个 cmets:

if(playedList == storedList)

不会做你所期望的。 == 仅当引用相同时才为真,而不是对象相等时。你应该改用if(storedList.equals(playedList))

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

【讨论】:

  • 谢谢你,我现在去清理我的代码,这解释了很多其他的事情
【解决方案2】:

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

btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

             if(secondArrayList.size()==5){
                  compare(); //Call compare method here
              }
            }
        });

【讨论】:

  • 我想我可能不得不这样做,直到我想出点什么谢谢
【解决方案3】:
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
        }

}

【讨论】:

    【解决方案4】:

    您的比较方法应如下所示 获取2张图片ID然后比较,

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

    【讨论】:

    • 图像视图在某种程度上是一个对象,所以我猜任何对象都可以比较,只要它们来自相同的类类型(字符串、It's 等)
    • 是的,它们可以进行比较。但我不认为你上面写的比较会返回你想要的结果。
    猜你喜欢
    • 1970-01-01
    • 2021-11-13
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多