1

2 つの文字列配列を減算して新しい配列を生成することは可能ですか? 次のコードでは、他の配列操作用に作成したメソッドを呼び出しています。これらのメソッドの結果を使用して新しい配列を作成したいと考えています。1 行のコードで新しい配列を作成する必要があります。

これはハードウェアの割り当てであるため、私のために書かれたコードを探しているわけではありません。ちょっとだけ方向性。

static String[] xor( String[] set1, String[] set2 )
{
    set1 = (union(set1, set2) - intersection(set1, set2)); 
    return set1; 
}
4

4 に答える 4

0
static String[] xor( String[] set1, String[] set2 )
{
    set1 = (union(set1, set2) - intersection(set1, set2)); 

    //first create union(set1, set2)
    //create a new array called union_array that contains all values of set1
    //then add values from set2 that are unique to union_array
    //adding to arrays isn't easy.  i would recommend using an ArrayList then converting it back to an array (if your prof allows that)

    //second create intersection(set1, set2)
    //create a new array called intersection_array
    //add every value in set1 that is also in set2.
    //same as before, try to use an ArrayList and convert back to array

    //third, you want to do the "subtraction"
    //remove all cases of intersection_array inside of union_array
    //put all these values in new array:  return_array

    //return return_array;
    return set1; 
}

配列の共用体と交差を取得するためのコードが必要な場合は、以下を確認してください。

http://www.dreamincode.net/forums/topic/170409-finding-the-union-and-intersection-of-two-arrays/

于 2013-10-16T16:02:29.480 に答える
0

問題をすぐに単純化しましょう。あなたが説明していることから、配列がセットであることや、最終結果がxor2つのセットであることを実際には気にしません。ある配列の内容を別の配列から削除したいだけです。たとえば、次のようになります。

primary = {1, 2, 3, 4, 5, 6}
remove = {3, 5}
result = subtract(primary, remove) = {1, 2, 4, 6}

「コードの 1 行で新しい配列を作成する必要がある」というコメントから、すでにそのようなツールを自由に使用できる可能性があります。おそらく、以前に実装した別の方法ですか? そうでない場合、おそらく 1 行でこれを行うことはできませんが、それほど難しくはありません。最初の配列 ( ) を単純にループし、primaryの各項目primaryについて に値が見つかるかどうかを確認しremove、見つからない場合は に項目を追加しprimaryますresult。配列が適切resultなサイズであることを確認するのは少し難しいですが、うまくいけば、これは正しい方向にあなたを指します:)

于 2013-10-16T16:00:35.463 に答える
0

セットはこの種の操作用に最適化されているため、両方の配列の内容を (それぞれ 1 つ) 格納しますSet(add/addAll、remove/removeAll、retainAll メソッドを見てください)。

詳細については、Sets に関する Java チュートリアルのビットをお読みください。

于 2013-10-16T15:44:13.610 に答える