4

2 つの Java ベクトルを 1 つにマージする簡単で迅速な方法はありますか?

たとえば、私が持っている場合:

  Vector<Object> Va = (Vector<Object>)Return_Vector_with_Objs();
  Vector<Object> Vb = (Vector<Object>)Return_Vector_with_Objs();

  Vector<Object> Vmerge_a_b = function_that_takes_a_b_merges(Va,Vb);

function_that_takes_a_b_merges のような関数や、これらの 2 つのベクトルをマージする簡単な方法はありますか?

ループや add() などでやりたくありません。もっと速い方法があるかどうか尋ねています。

編集: また、繰り返されるオブジェクトを除外したいと考えています。

4

2 に答える 2

6

もちろん!

static Vector<Object> function_that_takes_a_b_merges(Vector<Object> Va, Vector<Object> Vb) {
  Vector<Object> merge = new Vector<Object>();
  merge.addAll(Va);
  merge.addAll(Vb);
  return merge;
}

新しいベクトルから始めることが重要です。そうしないとVa、 を呼び出すと変更されますVa.addAll()

于 2013-02-06T20:00:07.870 に答える
3

あなたがすることができます:

Set<String> set = new HashSet<>(va);
set.addAll(vb);
Vector<String> merged = new Vector<>(set);

注:Vectorはかなり古いCollectionもので、パフォーマンス コストがかかる同期メソッドのオーバーヘッドがあります。ArrayList代わりに使用でき、インターフェイス コントラクトのaddAllメソッドも持っています。同期が必要なList場合は、 Collections.synchronizedListを使用して元の を同期できます。CollectionList

于 2013-02-06T19:56:14.467 に答える