3

私は2つの配列を持っています

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

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

上記の2つの配列を比較しながら、次の答えを得るにはどうすればよいですか。

上記の 2 つの配列を比較しながら、共通の要素を除外したいと考えています。

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

2 に答える 2

7

2 つのセットの和集合 (重複はありませんよね?) から交差部分を差し引いたものが必要なようです:

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 に答える