Jim*_*mmy 120 java collections hashmap
我有HashMap各种键和值,我怎么能得到一个值?
我在地图中有一个键my_code,它应该包含一个字符串,我怎么能在不必迭代地图的情况下得到它?
到目前为止我已经......
HashMap newMap = new HashMap(paramMap);
String s = newMap.get("my_code").toString();
Run Code Online (Sandbox Code Playgroud)
我期待看到一个String,如"ABC"或"DEF",因为这是我最初放在那里,但如果我做了一个System.out.println()我得到像java.lang.string#F0454
对不起,我不太熟悉你可能猜到的地图;)
Bal*_*usC 163
刚用Map#get(key)?
Object value = map.get(myCode);
Run Code Online (Sandbox Code Playgroud)
这是一个关于地图的教程,您可能会发现它很有用: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;
}
Run Code Online (Sandbox Code Playgroud)
jef*_*ter 57
如果您将键/值存储为字符串,那么这将起作用:
HashMap<String, String> newMap = new HashMap<String, String>();
newMap.put("my_code", "shhh_secret");
String value = newMap.get("my_code");
Run Code Online (Sandbox Code Playgroud)
问题是在HashMap中填充了什么(键和值)
Shi*_*ari 11
如果您将使用泛型并将地图定义为
Map<String,String> map = new HashMap<String,String>();
Run Code Online (Sandbox Code Playgroud)
然后取值为
String s = map.get("keyStr");
Run Code Online (Sandbox Code Playgroud)
您不需要对map.get()进行类型转换或调用toString方法来获取String值
我担心你的问题根本不清楚.钥匙没有"名字"; 就地图而言,它不会被"召唤"任何东西 - 它只是一个键,并将与其他键进行比较.如果你有很多不同种类的钥匙,我强烈建议你把它们放在不同的地图上以保持理智.
如果这没有帮助,请澄清问题 - 最好用一些代码来表明你的意思.
小智 6
这里需要注意的一点是,如果您的密钥是java中用户定义类的对象,那么请将其重写为equals方法.因为HashMap.get(Object key)方法使用equals方法来匹配键值.如果不覆盖equals方法,那么它将尝试仅根据键的引用而不是key的实际值来查找值,在这种情况下,它将始终返回null.