<int,string>
という2つのハッシュテーブルがあります。今、彼らはそれぞれの値が重複しています。両方のハッシュテーブルをマージして別の値を与えたいと思います。どうやってやるの!?2つのHashTableをマージしてJavaで重複を取り除く
ありがとう 編集#1私はディレクトリからファイルの内容を読んでいます。これらの内容をトークンとして2つの異なるハッシュテーブルに格納する。今私は両方のテーブルの明確な値を与える単一のハッシュテーブルにそれらをマージする必要があります。
<int,string>
という2つのハッシュテーブルがあります。今、彼らはそれぞれの値が重複しています。両方のハッシュテーブルをマージして別の値を与えたいと思います。どうやってやるの!?2つのHashTableをマージしてJavaで重複を取り除く
ありがとう 編集#1私はディレクトリからファイルの内容を読んでいます。これらの内容をトークンとして2つの異なるハッシュテーブルに格納する。今私は両方のテーブルの明確な値を与える単一のハッシュテーブルにそれらをマージする必要があります。
putAll
メソッドをHashtable
とすると、2つのハッシュテーブルをマージできます。引数として渡されたハッシュテーブルは、元のハッシュテーブルの重複を上書きします。
私は2つのハッシュテーブルががを合併し、まだ明確な値を持つことができますどのように取得できませんでした。 ハッシュテーブルから重複したアイテムを削除したい場合は(別のハッシュテーブルに残しておきます)、別の回答で示唆したようにしますが、重複しないアイテムはmap2
に追加しないでください。その後、最初のテーブルは変更されず、2番目のテーブルはmap1
には含まれません。
別の解決策は、putAll
を使用して2つのハッシュテーブルをマージと第二ハッシュテーブル:)私はあなたが値を重複しない、重複キーを意味推測
をクリアすることです。また、Hashtableはマップ実装なので、汎用マップソリューションを提供します。
// assuming the maps are of type String/String
for(Map.Entry<String, String> entry : map1.entrySet()){
if(map2.containsKey(entry.getKey()){
map2.remove(entry.getKey());
}else{
map2.put(entry.getKey(), entry.getValue());
}
}
今MAP2は、すべての重複とマージされたバージョンでは、
を削除しかし、あなたが重複値せずに地図をしたい場合、それは達成するために、かなり面倒です。おそらくBidiMapインターフェイスをapache commons/collectionsにチェックアウトする必要があります。キーと値の両方が一意であるマップを提供します。これで、すべての重複した値が、両方のマップから削除され
Collection<String> values1 = map1.values();
Collection<String> values2 = map2.values();
Collection<String> values1Copy = new ArrayList<String>(values1);
Collection<String> values2Copy = new ArrayList<String>(values2);
while(values1.removeAll(values2Copy)){}
while(values2.removeAll(values1Copy)){}
:
実は、ここに重複する値を削除するための簡単な方法です。 1つのコピーを保持したい場合は、whileループ内のvalues1とvalues2コレクションを使用し、コピーを取らないでください。
まあ、それは私が混乱しているものです。しかし、あなたの情報。私は再び自分の質問を編集しています。 – Maverick
元の質問者は、彼はキーではなく、価値を意味するとコメントしています。これは質問を不完全にします。 2つの異なるテーブルに重複値を持たせるためには、鍵生成アルゴリズムが異なる必要があります。その場合、質問に欠けている情報のビットは、どの鍵を保持したいのですか?最初のハッシュテーブルからのものか、2番目のハッシュテーブルからのものか?
上記のS.P.Floyd-seanizerで提示されている解決策は正しいですが、実際には値を意味する場合は、ロジックを少し追加する必要があります。この追加のロジックは、コードをマージされたバージョンの下に置くためのキーを教えてくれます。
質問者が「価値」と「キー」の混乱を抱えている場合は、彼の解決策が有効です。
"ハッシュテーブルとペア"とはなんですか?また、重複した値を取り除きたいのですか、むしろ重複するキーを取り除きたいですか? –
申し訳ありませんが、私はそれが編集されていると思います...私は整数、文字列のペアを意味します。私は重複した値を取り除きたい。 – Maverick
いいえ - 山括弧を正しくマークしていませんでした。重複した値を削除するには、どのキーを削除しますか? –