我想比较两个数组并将差异存储在另一个数组中
例如,两个数组可能是
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++;
}
}
}
答案 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]);
}