0

2 つの配列をまとめるだけでなく、配列上で繰り返される数値を 2 回出力しないようにするプログラムを作成する必要があります。

例えば:

1,2,3,4,5 //Array 1

5,6,7,8,4 //Array 2

1,2,3,4,5,6,7,8 //Array 1 & 2 together

Hashshet がこれを実行するのに役立つと聞きましたが、実際に機能するかどうかはわかりません。プログラミングを始めたばかりなので、このようなことはあまり知りません。

誰かが私を助けてくれることを願っています。

ありがとう

4

9 に答える 9

0

これを試して:

    String arr[] = {"1", "2", "3", "4"};
    String arr2[] = {"1", "2", "3", "4", "5"};
    List<String> numList = new ArrayList<String>(Arrays.asList(arr));
    Collections.addAll(numList, arr2);
    Set<String> aSet = new HashSet<String>(numList);
    Iterator iterator = aSet.iterator();
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }
于 2013-10-08T05:57:01.780 に答える
0

重複を削除し、項目を挿入する順序を維持する必要がある場合は 、 LinkedHashSetを使用できます。

Set<Integer> set = new LinkedHashSet<Integer>();

for(int i = 0;i < firstArray.length; i++){
    set.add(firstArray[i]); 
}

// set now contains 1,2,3,4,5

for(int i = 0;i < secondArray.length; i++){
    set.add(secondArray[i]);
}

// set now contains 1,2,3,4,5,6,7,8

挿入順序を保持する必要がない場合は、セットの実装をHashSetに変更できます。

Set<Integer> set = new HashSet<Integer>();
于 2013-10-08T05:50:12.593 に答える
0

を追加しArrayList1ArrayList2Single arraylist を生成しArrayList3ます。

今それをに変換します

Set Unique_set = new HashSet(Arraylist3);

ユニークなセットでは、ユニークな要素を取得します。

ノート

ArrayListを使用すると、値を複製できます。Setは値の重複を許可しません。問題が解決することを願っています。

于 2013-10-08T05:49:49.997 に答える
0

一般的なアルゴリズムを紹介し、コーディングはあなたに任せます。

  1. サイズが等しい新しい配列(結果と呼ばれます)を作成しますarray1.length+array2.length
  2. タイプのハッシュマップを作成する<int, boolean>
  3. 配列を繰り返し処理している間、数値を「結果」にコピーする前に、その数値がハッシュマップに存在するかどうかを確認します (ブール値が true の場合、存在します)。結果に安全にコピーできない場合は、その数値のブール値を true に切り替えます。
  4. 最初の配列の最後に到達したとき。2 番目のループのインデックス変数を最初の配列の長さに等しく設定し、手順 3 を繰り返します。

HashMap がわからない場合は、これを初期化する方法を示します。Get() はそのキーで要素を取得し、put() は指定したキーに値を置きます (この場合は数値になります)。

<!-- language: java -->
HashMap<int,boolean> map = new HashMap<int,boolean>();
于 2013-10-08T05:47:43.550 に答える
-1

それがあなたに役立つことを願っています

マージソートアルゴリズム

マージソートコード

ここに画像の説明を入力

于 2013-10-08T05:45:09.683 に答える