0

我有两个问题:我正在使用 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:是否可以使用 deepEquals 检查 play1 和 pre 之间的相等?我也知道 pre 是二维数组,而 play1 是一维数组。如果我想检查 play1 是否等于 pre,那么我可能会检查如下:

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

代码是否正确?即使可以检查一维和二维数组之间的相等性吗?还是我必须使用 ArrayList?我对 ArrayList 不太熟悉。如果有人举例说明,将不胜感激。

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

谢谢。

4

2 回答 2

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;
        }    
    }
于 2013-12-13T11:24:45.970 回答
1

从 API 文档:

如果两个数组引用都为空,或者它们引用的数组包含相同数量的元素并且两个数组中所有对应的元素对都非常相等,则认为两个数组引用是深度相等的。

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

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

于 2013-12-13T11:05:18.763 回答