比较两个字符串数组并将结果存储在另一个数组中

时间:2012-12-20 15:17:22

标签: java

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

例如,两个数组可能是

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++;
        }
    }
}

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:1)

我认为这可能就是你要找的东西。请注意,如果值存在于第二个数组中但不存在于第一个数组中,则它将仅添加到第三个“数组”。在你的例子中,只存储兔子,而不是狗(即使两者中都不存在狗)。这个例子可能会缩短,但我想保持这样,所以更容易看到发生了什么。

首先导入:

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'。如果您需要它是第三个数组,您可以通过执行以下操作将其简单地转换为:

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]);
}