在java中比较1D和2D数组的相等值



我有两个问题:我使用的是JAVA编程语言,我在使用数组时发现了一些困难。

以下是一些不同的阵列:

Object [] play1 = {0,3,6};
Object [] play2 = {0,3,6,4};
Object[][] pre = {{0,1,2},{0,3,6},{2,5,8},{6,7,8},{0,4,8},{2,4,6}};

问题1:是否可以检查play1和预使用deepEquals之间的相等?我也知道pre是2D阵列,play1是1D阵列。如果我想检查play1是否等于pre,那么我可以检查如下:

if(Arrays.deepEquals(pre, play1)){
    System.out.print("true");
    }else{System.out.print("false");}

代码正确吗?即使可以检查1D和2D阵列之间的相等性?还是必须使用ArrayList?我对ArrayList不是很熟悉。如果有人举例说明,我将不胜感激。

问题2:但是,如果我想在play1和play2之间进行检查,那么输出也是false。我想在两个数组之间进行检查,即使它们没有相等的元素,但如果两个数组都由相同的元素组成,例如:在play1和play2中都可以找到{0,3,6},那么输出必须为true。。

谢谢。

对于问题2:

您可以创建对象的List,并按如下方式进行检查:

    List<Object> play1List = Arrays.asList(play1);
    List<Object> play2List = Arrays.asList(play2);
    if(play1List.containsAll(play2List) || play2List.containsAll(play1List))
        System.out.println("founD");

对于问题1:

    List<Object> play1List = Arrays.asList(play1);
    for (int i =0 ; i< pre.length;i++){
        List<Object> preList = Arrays.asList(pre[i]);
        if(preList.equals(play1List)){
            System.out.println("FounD"+preList);
            break;
        }    
    }

来自API文档:

如果两个数组引用都为null,则认为它们完全相等,或者如果它们引用的数组包含相同数量的元素,并且两个阵列中所有对应的元素对都很深相同的

从您的问题中,我了解到您正在搜索数组的一个子组。

我不认为JDK上有这样的函数,可能你必须开发自己的函数来迭代数组。

相关内容

  • 没有找到相关文章

最新更新