我有一个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}}
抱歉,我对你可能猜到的地图不太熟悉;)
答案 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