根据键名从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键的有用类。