2012-03-12 21 views
1

HashMapの値としていくつかのエントリを持つArrayListがあります。新しい値を追加するにはどうすればいいですか?HashMapのArrayListにエントリを追加する

はこのようにそれをThanks.Did:

Map<String, ArrayList<String>> index = new HashMap<String, ArrayList<String>>(); 
void add(String kword, String... urls){ 
    if(index.containsKey(kword)){ 
     index.get(kword).addAll(Arrays.asList(urls)); 
    } else { 
     index.put(kword, (ArrayList<String>) Arrays.asList(urls)); 
    } 
} 
+0

あなたのコードは何ですか?あなたは希望の答えを得るために私達にそれを示す必要があります。 – Lion

+0

質問を明確にすることはできますか? –

+1

Uh ... 'Arrays.asList()'がその結果のために 'ArrayList'を使用していない場合、あなたのコードは壊れます... – thkala

答えて

4

を使用すると、これらの線に沿って何か持っていると仮定すると:

Map<K, ArrayList<V>> map = new HashMap<K, ArrayList<V>>(); 

を、これはあなたのように含まれている任意のリストに新しい値を追加できるようにする必要がありますマップ内の値:

map.get(listKey).add(newValue); 

もちろん、の結果も保存できます複数の値を挿入するときmap.get()のコストを回避するために、一時的な変数に:

List<String> l = map.get("your_key"); 
l.add("Some Other Value"); 

それはで、このコードスニペットを使用するためにかなり簡単です:あなたはArrayList<String>を持って提供

List<V> list = map.get(listKey); 

for (V value : newValues) 
    list.add(value); 
+0

このような場合にイテレータを使用することはできますか? – 4lex1v

+0

@ JohnGray:1.何をするイテレータですか? 2.ループ内のスニペットは、 'newValues'が' Collection'である場合、イテレータを内部的に使用しています... – thkala

0

は、このようにそれを行いますStringインスタンス以外のリスト適切な汎用品を使用してください。

1

正確にあなたがHashMapから追加したい値に依存します。エントリ、キーまたは値ですか?マップ上のエントリ、キー、または値のいずれかを反復して、リストに追加することができます。

以下の例は、マップから、HashMapのentrySet()メソッドを使用してエントリを取得します。あなたが探しているエントリかどうかを確認する方法があると仮定します(isThisTheEntryIAmLookingFor(...))。

Map<String, String> map; 
//... 

ArrayList<Map.Entry<String, String>> list = 
     new ArrayList<Entry<String, String>>(); 

for (Map.Entry<String, String> e : map.entrySet()) { 

    if (isThisTheEntryIAmLookingFor(e)) { 

     list.add(e); 

    } 

} 

あなただけの正しい種類で、それぞれkeySet()またはvalues()を使用し、キーまたは値を収集する場合。

関連する問題