2013-07-31 54 views
0

在我的Android應用程序,我試圖讓使用哈希映射一個鍵的所有值都只有一個單一的關鍵價值。以下是我的代碼。但對於關鍵的「blr」而不是「banglore」(在我的代碼中),我只獲得了一個「maharashtra」值。我錯過了什麼?入門android系統

HashMap<String, String> myMap = new HashMap<String, String>(); 
    myMap.put("ind", "india"); 
    myMap.put("tn", "tamilnadu" + " How"); 

    myMap.put("blr","bangalore"); 
    myMap.put("blr","maharashtra"); 
    Set<Entry<String,String>> set = myMap.entrySet(); 

    for (Map.Entry<String, String> me : set) { 
     if(me.getKey().equals("blr")){ 
      System.out.println(me.getValue()); 

    } 

} 
+0

這是不是這樣做的,在此您在BLR覆蓋價值的一種方式,首先它有班加羅爾但隨後已更改爲馬哈拉施特拉邦。 –

回答

3

首先:你不能。作爲這裏所說:

public V put(K key, V value) 

將指定值與此映射中指定的鍵。如果 映射先前包含密鑰的映射,則替換舊值 。

請閱讀:http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

第二:如果您使用的是鑰匙,你很可能不應該想的永遠不必重複鍵價值結構,它違背了一個鍵,值收集的目的。

簡單的解決辦法是使用HashMap<String, List<String>>而不是HashMap<String, String>。將所有值存儲在List<String>中。

0

HashMap的一點是,鑰匙都是獨一無二的。因此您將覆蓋bangaloremaharashtramyMap.put("blr","maharashtra");

0

這些密鑰是唯一的。所以你只是簡單地覆蓋第一個任務

myMap.put("blr","bangalore"); 

myMap.put("blr","maharashtra"); 

因此,使用另一個關鍵!?

0

也許你應該使用HashMap<String, List<String>>而不是HashMap<String, String>。 要添加元素映射:

yMap.put("blr", new ArrayList<String>()); 
yMap.get("blr").add("maharashtra"); 
1

最後得到了解決。 Awesom ...

import java.util.HashMap; 
import java.util.Map; 
import java.util.Map; 
import java.util.Map.Entry; 
import java.util.Set; 
import java.util.ArrayList; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Iterator; 
import java.util.List; 


public class hashmap { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // HashMap<String, List<String> > myMap = new HashMap<String, List<String> >(); 
     Map<String,List<String>> myMap = new HashMap<String,List<String>>(); 

     List<String> arr4 = new ArrayList<String>(); 
     arr4.add("india"); 
     arr4.add("tamilnadu"); 
     arr4.add("tamilnadu"); 
     arr4.add("tamilnadu"); 
     arr4.add("tamilnadu"); 

     myMap.put("tn", arr4); 
     Set<Entry<String,List<String>>> set = myMap.entrySet(); 

     for (Map.Entry<String, List<String>> me : set) { 
      if(me.getKey().equals("tn")){ 
       System.out.println(me.getValue()); 

     } 

    } 

} 
}