0

我想比较两个数组并将差异存储在另一个数组中

例如,这两个数组可能是

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

我认为这可能是您正在寻找的。请注意,如果该值存在于第二个数组中但不存在于第一个数组中,它只会添加到第三个“数组”中。在您的示例中,只会存储 rabbit,而不是 dog(即使两者中都不存在 dog)。这个例子可能会被缩短,但我想保持这样,这样更容易看到发生了什么。

第一次导入:

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 现在将包含“兔子”。如果您需要将它作为第三个数组,您可以通过执行以下操作将其转换为该数组:

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

要打印 List 或 Array 的内容,请执行以下操作:

// 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 回答
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 回答