在android中只获得一个单键值

时间:2013-07-31 10:29:28

标签: android hashmap

在我的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());

    }

}

5 个答案:

答案 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");