根据键名从HashMap获取字符串值

时间:2009-11-24 12:11:43

标签: java collections hashmap

我有一个HashMap有各种键和值,我怎样才能得到一个值?

我在地图中有一个名为my_code的密钥,它应该包含一个字符串,如何在不必遍历地图的情况下获得该密钥?

到目前为止我已经......

   HashMap newMap = new HashMap(paramMap);
   String s = newMap.get("my_code").toString();

我期待看到String,例如“ABC”或“DEF”,因为这是我最初放在那里的,但是如果我做了System.out.println()我会得到像java.lang.string#F0454 {1}}

抱歉,我对你可能猜到的地图不太熟悉;)

10 个答案:

答案 0 :(得分:157)

只需使用Map#get(key)

Object value = map.get(myCode);

以下是有关地图的教程,您可能会发现它很有用:http://java.sun.com/docs/books/tutorial/collections/interfaces/map.html

编辑:您使用以下内容编辑了您的问题:

  

我期待看到一个字符串,例如“ABC”或“DEF”,因为我最初放在那里,但是如果我做一个System.out.println()我会得到像java.lang.String中#F0454

     

抱歉,我对你可能猜到的地图不太熟悉;)

你看到了Object#toString()的结果。但java.lang.String应该已经实现了一个,除非您使用名称为s的小写java.lang.string创建了自定义实现。如果它实际上是一个自定义对象,那么只要对所需对象执行Object#toString()System.out.println(),就需要覆盖toString()以获得“人类可读的字符串”。例如:

@Override
public String toString() {
    return "This is Object X with a property value " + value;
}

答案 1 :(得分:55)

如果您将键/值存储为字符串,那么这将起作用:

HashMap<String, String> newMap = new HashMap<String, String>();
newMap.put("my_code", "shhh_secret");
String value = newMap.get("my_code");

问题是在HashMap中填充了什么(键和值)

答案 2 :(得分:11)

如果您将使用Generics并将地图定义为

Map<String,String> map = new HashMap<String,String>();

然后将值取为

 String s = map.get("keyStr"); 

您不需要对map.get()进行类型转换或调用toString方法来获取String值

答案 3 :(得分:9)

你的问题根本不清楚我害怕。钥匙没有“名字”;就地图而言,它不会被“召唤”任何东西 - 它只是一个键,并将与其他键进行比较。如果您有许多不同类型的按键,我强烈建议您将它们放在不同的地图中以保持理智。

如果这没有帮助,请澄清问题 - 最好用一些代码来表明你的意思。

答案 4 :(得分:6)

map.get(myCode)

答案 5 :(得分:6)

这里需要注意的一点是,如果您的密钥是java中用户定义类的对象,那么请将其重写为equals方法。因为HashMap.get(Object key)方法使用equals方法来匹配键值。如果你没有覆盖equals方法,那么它将尝试简单地根据键的引用而不是key的实际值来查找值,在这种情况下它将始终返回null。

答案 6 :(得分:2)

假设您将HashMap声明为: -

HashMap<Character,Integer> hs = new HashMap<>();

然后,键入地图的类型为字符数据类型和int类型的值。现在,要获得与键对应的值,不管键的类型,值类型,语法是: -

    char temp = 'a';
    if(hs.containsKey(temp)){
`       int val = hs.get(temp); //val is the value corresponding to key temp
    }

因此,根据您的问题,您希望获得与键对应的字符串值。为此,只需将HashMap声明为HashMap&lt;&#34;数据类型的键&#34;,&#34;数据类型的值&#34; hs = new HashMap&lt;&gt;(); 使用它将使您的代码更清晰,而且您不必将hs.get(&#34; my_code&#34;)的结果转换为字符串,因为默认情况下它返回字符串的值,如果在入口时有一个保持价值为一个字符串。

答案 7 :(得分:1)

这是如何使用keySet(),get(),values()和entrySet()函数在Map中获取键和值的另一个示例:

        Map<Integer, String> testKeyset = new HashMap<Integer, String>();

        testKeyset.put(1, "first");
        testKeyset.put(2, "second");
        testKeyset.put(3, "third");
        testKeyset.put(4, "fourth");

        // Print a single value relevant to a specified Key. (uses keySet())
        for(int mapKey: testKeyset.keySet())
            System.out.println(testKeyset.get(mapKey));

        // Print all values regardless of the key.
        for(String mapVal: testKeyset.values())
            System.out.println(mapVal.trim());

        // Displays the Map in Key-Value pairs (e.g: [1=first, 2=second, 3=third, 4=fourth])
        System.out.println(testKeyset.entrySet());

答案 8 :(得分:0)

您可以使用HashMap中的get(Object key)方法。 请注意,在很多情况下,您的Key Class应该覆盖equals方法,以成为Map键的有用类。

答案 9 :(得分:0)

 HashMap<Integer, String> hmap = new HashMap<Integer, String>();
 hmap.put(4, "DD");

映射到键4的值为DD