Arrays 两个Java数组的对称差分

Arrays 两个Java数组的对称差分,arrays,java,Arrays,Java,我有两个数组 String[] ID1={"19","20","12","13","14"}; String[] ID2={"10","11","12","13","15"}; 在比较上述两个数组时,如何得到以下答案 我想在比较上述两个数组时排除公共元素 String[] Result={"14","15","19","20","10","11"}; 它看起来像XOR操作;) 请更直接地描述你的需求。伪代码: foreach s in ID1 { if(ID2.contain

我有两个数组

 String[] ID1={"19","20","12","13","14"};

 String[] ID2={"10","11","12","13","15"};  
在比较上述两个数组时,如何得到以下答案

我想在比较上述两个数组时排除公共元素

 String[] Result={"14","15","19","20","10","11"};

它看起来像XOR操作;)

请更直接地描述你的需求。伪代码:

foreach s in ID1 {
  if(ID2.contains(s)) {
    ID2.remove(s)
  } else {
    ID2.add(s)
  }
}

ID2将包含您的结果。假设两个数组中没有重复项。

似乎希望两个集合的并集(没有重复项,对吗?)减去交点:

Set<Integer> union = new HashSet<Integer>(Arrays.asList(ID1));
union.addAll(Arrays.asList(ID2);

Set<Integer> intersection = new HashSet<Integer>(Arrays.asList(ID1));
intersection.retainAll(Arrays.asList(ID2);

union.removeAll(intersection);

// result is left in "union" (which is badly named now)
Set union=newhashset(Arrays.asList(ID1));
union.addAll(Arrays.asList,ID2);
Set intersection=newhashset(Arrays.asList(ID1));
交叉点.保留(数组.列表(ID2));
联轴节。拆除所有(交叉);
//结果留在“联合”中(现在名称不好)

(我将字符串更改为整数,这似乎更适合数据,但它将以相同的方式处理字符串)

你需要解释为什么你想得到这个结果。你想达到什么目的?这是文字作业,还是学习这个概念的一般问答?数组总是排序吗?请提供一点背景知识…你的逻辑是什么?为什么你想达到这个目的?我想比较两个数组并排除常见元素..Doe例如,将
{14,10,11,12,13}
{15,10,11,12,13}进行比较的结果应该是什么
?这显然不会保留顺序或重复。如果您需要,请让我们知道。实际上,我的意思是避免在这两个数组中重复值并打印结果。我如何打印与您的答案有偏差的结果?很好。问题已更改,因此我的答案现在根本不匹配。不用担心,但这个想法仍然相关。