比较java中1D和2D数组之间的等于

时间:2013-12-13 10:55:13

标签: java arrays arraylist deepequals

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

以下是一些不同的数组:

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:是否可以使用deepEquals检查play1和pre之间的等于?我也知道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。我想在两个数组之间进行检查,即使它们没有相同的元素,但如果两个数组都包含相同的元素,例如:{0,3,6}可以在play1和play2中找到,那么输出必须成为现实.. < / p>

感谢。

2 个答案:

答案 0 :(得分:1)

来自API文档:

  

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

根据您的问题,我了解您正在搜索阵列的子组。

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

答案 1 :(得分:1)

问题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;
        }    
    }