0

質問が 2 つあります。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 が 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 です。等しい要素を持たない場合でも、2 つの配列間でチェックしたいのですが、両方の配列が次のような同じ要素で構成されている場合: {0,3,6}play1 と play2 の両方で見つけることができる場合、出力は true になる必要があります..

ありがとう。

4

2 に答える 2

1

API ドキュメントから:

2 つの配列参照は、両方が null の場合、または同じ数の要素を含む配列を参照し、2 つの配列内の対応する要素のすべてのペアが完全に等しい場合、完全に等しいと見なされます。

あなたの質問から、配列のサブグループを探していることがわかりました。

JDKにはそのための関数があるとは思いません。おそらく、配列を反復する独自の関数を開発する必要があります。

于 2013-12-13T11:05:18.763 に答える
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 に答える