2013-07-31 52 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()); 

     } 

    } 

} 
}