3

我有两个数组

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

 String[] ID2={"10","11","12","13","15"};  

在比较上述两个数组时如何获得以下答案。

我想在比较上述两个数组时排除常见元素。

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

2 回答 2

7

似乎您想要两组的并集(没有重复,对吗?)减去交集:

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)

(我将您的字符串更改为整数,这似乎更适合数据,但它可以以相同的方式与字符串一起使用)

于 2012-12-07T11:41:05.280 回答
2

它看起来像 XOR 操作 ;)

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

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

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

于 2012-12-07T11:34:19.423 回答