在我的Android应用程序中,我试图使用哈希映射获取单个键的所有值。以下是我的代码。但我只得到一个价值" maharashtra"关键" blr"而不是" banglore" (在我的代码中)。我错过了什么?
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 :(得分:3)
首先:你做不到。如上所述:
public V put(K key, V value)
将指定的值与此映射中的指定键相关联。如果 地图以前包含键的映射,旧值是 替换。
请阅读:http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html
第二:如果您使用的是Key,Value结构,您很可能不应该想到重复键,它会破坏Key,Value集合的目的。
一个简单的解决方案是使用HashMap<String, List<String>>
代替HashMap<String, String>
。存储List<String>
。
答案 1 :(得分: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());
}
}
}
}
答案 2 :(得分:0)
散列映射的关键是密钥是唯一的。因此,您使用bangalore
maharashtra
myMap.put("blr","maharashtra");
答案 3 :(得分:0)
钥匙是独一无二的。所以你只是覆盖了第一个作业
myMap.put("blr","bangalore");
与
myMap.put("blr","maharashtra");
所以,使用另一把钥匙!?
答案 4 :(得分:0)
您可能应该使用HashMap<String, List<String>>
代替HashMap<String, String>
。
要将元素添加到地图:
yMap.put("blr", new ArrayList<String>());
yMap.get("blr").add("maharashtra");