根据键名从HashMap获取string值
我有一个HashMap
的各种键和值,我怎么能得到一个值?
我在地图上有一个名为my_code
的键,它应该包含一个string,我怎么才能得到,而不必遍历地图?
到目前为止,我已经..
HashMap newMap = new HashMap(paramMap); String s = newMap.get("my_code").toString();
我期待看到一个String
,如“ABC”或“DEF”,因为这是我最初放在那里,但如果我做一个System.out.println()
我得到像java.lang.string#F0454
对不起,我不太熟悉地图,你可能会猜到;)
只需使用Map#get(key)
?
Object value = map.get(myCode);
这里有一个关于地图的教程,你可能会觉得它很有用: http : //java.sun.com/docs/books/tutorial/collections/interfaces/map.html 。
编辑:你编辑你的问题与以下内容:
我期待看到一个string,如“ABC”或“DEF”,因为这是我最初放在那里,但如果我做一个System.out.println()我得到像java.lang.string# F0454
对不起,我不太熟悉地图,你可能会猜到;)
你看到了Object#toString()
。 但是java.lang.String
应该已经有了一个实现,除非你在名字java.lang.string
创build了一个小写字母s
的自定义实现。 如果它实际上是一个自定义对象,那么只要对所需对象执行System.out.println()
或toString()
,就需要重写Object#toString()
以获取“可读的string”。 例如:
@Override public String toString() { return "This is Object X with a property value " + value; }
如果你将键/值存储为string,那么这将工作:
HashMap<String, String> newMap = new HashMap<String, String>(); newMap.put("my_code", "shhh_secret"); String value = (String) newMap.get("my_code");
问题是在HashMap中填充了什么(key&value)
恐怕你的问题一点也不清楚。 钥匙没有“名字”; 就地图而言,它并不是“所谓的”,它只是一个关键,并将与其他关键字进行比较。 如果你有很多不同types的键,我强烈build议你把它们放在不同的地图上,以保持清醒。
如果这没有帮助,请澄清这个问题 – 最好用一些代码来说明你的意思。
如果您将使用generics并将其定义为
Map<String,String> map = new HashMap<String,String>();
然后获取价值
String s = map.get("keyStr");
你不会被要求强制转换map.get()或调用toString方法来获取String值
map.get(myCode)
这里需要注意的一个重点是,如果你的键是java中用户定义的类的对象,那么可以重写equals方法。 因为HashMap.get(Object key)方法使用equals方法来匹配键值。 如果你不重写equals方法,那么它将尝试简单地基于键的引用而不是键的实际值来查找该值,在这种情况下它将总是返回一个空值。
您可以使用HashMap中的get(Object key)方法。 请注意,在许多情况下,您的关键类应该重写equals方法,以成为Map键的有用类。