0

2つの配列を比較して、その差を別の配列に格納したい

たとえば、2つのアレイは次のようになります。

String[] a1 = { "cat" , "dog" };
String[] a2 = { "cat" , "rabbit" };

結果の配列は次のようになります

{ "rabbit" }

このコードを使用していますが、機能しません

int n = 0;
for (int k = 0; k <= temp.length; k++)
{
    for (int u = 0; u <= origenal.length; u++)
    {
        if (temp[k] != origenal[u] && origenal[u] != temp[k])
        {
            temp2[n] = temp[k];
            System.out.println(temp[u]);
            n++;
        }
    }
}
4

2 に答える 2

1

これでうまくいくはずです。

String[] result = new String[100];
Int k = 0;
Boolean test = true;
for(i=0; i < a1.length; i++){
   for(j=0; j < a2.length; j++){
      if(a2[i].equals(a1[i])) continue;
      test = false
   }
   if(test == false) result[k++] = a1[i];
}
于 2012-12-20T15:30:54.850 に答える
1

これがあなたが探しているものかもしれないと思います。値が2番目の配列に存在し、最初の配列には存在しない場合にのみ、3番目の「配列」に追加されることに注意してください。あなたの例では、犬ではなくウサギだけが保存されます(犬は両方に存在しませんが)。この例はおそらく短くなる可能性がありますが、何が起こっているのかを簡単に確認できるように、このままにしておきたいと思いました。

最初のインポート:

import java.util.ArrayList;
import java.util.List;

次に、次の手順を実行して、アレイにデータを入力して分析します

String a1[] = new String[]{"cat" , "dog"};    // Initialize array1
String a2[] = new String[]{"cat" , "rabbit"}; // Initialize array2

List<String> tempList = new ArrayList<String>();
for(int i = 0; i < a2.length; i++)
{
    boolean foundString = false; // To be able to track if the string was found in both arrays
    for(int j = 0; j < a1.length; j++)
    {
        if(a1[j].equals(a2[i]))
        {
            foundString = true; 
            break; // If it exist in both arrays there is no need to look further
        }
    }
    if(!foundString) // If the same is not found in both..
        tempList.add(a2[i]); // .. add to temporary list
}

tempListには、仕様に従って「rabbit」が含まれるようになります。必要に応じて3番目の配列にする必要がある場合は、次の手順を実行するだけで、非常に簡単に配列に変換できます。

String a3[] = tempList.toArray(new String[0]); // a3 will now contain rabbit

リストまたは配列のいずれかのコンテンツを印刷するには、次のようにします。

// Print the content of List tempList
for(int i = 0; i < tempList.size(); i++)
{
    System.out.println(tempList.get(i));
}

// Print the content of Array a3
for(int i = 0; i < a3.length; i++)
{
    System.out.println(a3[i]);
}
于 2012-12-20T15:38:08.987 に答える