2012-02-27 4 views
1

この基本的な質問は許してください。しかし、私はJavaにはまだまだ慣れていて、自分のやり方を見つけています。どのようなJava Key:値のデータ型を重複する値に使用するか?

私はウェブスクレーパーを作成しており、key:valueデータを何らかの形で保存する必要があります。私は今までHashMapsを使ってきましたが、これまでユニークなキーの重複値を許可する必要があることを除いて、素晴らしいことでした。たとえば、これは許されるべきである:

Key:Value 
abc : 123 
cde : 727 
efg : 123 
hij : 123 
klo : 876 
opa : 909 

誰もがこのような状況で使用するのがベストだろう何を助言することはできますか?

おかげ

+0

'HashMap'はうまく動作するはずです。 –

答えて

4

これはjava.util.HashMapを使用して既に可能です。重複しているは不可能です。

キーを値にマップするオブジェクト。マップに重複キーを含めることはできません。各キーは最大でも1つの値にマップできます。

投稿者java.util.MapJavaDoc(HashMapによって実装されています)。

+0

説明していただきありがとうございます。私のコードのどこかにあるバグが原因ではないと思った理由が判明しました。私は値が重複することができないと思っていました、そして、さらなる研究は私の疑惑を確認した(誤った)情報を示しました、私はもっと慎重に研究していたはずです。再度、感謝します。 – Mike

0

リストでマップ(ハッシュマップはOK)を使用できます。

0

私は、キーからある種のコレクションへのマップを提案したいと思います。これにはJavaに組み込まれているものは何もありません(Apache CollectionsGuavaなどの他のコレクションフレームワークには複数のマップタイプがあります)。あなただけの無順序で、値が各キーに関連付けられているかを追跡したり情報をカウントしたい場合は、

Map<KeyType, Set<ValueType>> map = new HashMap<KeyType, Set<ValueType>>(); 

は残念ながら、挿入は少し複雑である使用することができます。キーが存在するかどうかをテストする必要があります。存在しない場合は、まずキーの下にSet<ValueType>を追加します。次に、新しい値をセットに追加することができます。

関連する問題