根据键名从 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的东西

对不起,我对地图不太熟悉,你可能已经猜到了;)

608138 次浏览

只用 Map#get(key)

Object value = map.get(myCode);

这里有一个关于地图的教程,你可能会发现它很有用: https://docs.oracle.com/javase/tutorial/collections/interfaces/map.html

编辑: 你用以下方式编辑了你的问题:

我希望看到一个字符串,比如“ ABC”或“ DEF”,因为这是我最初放在那里的,但是如果我执行 System.out.println () ,我会得到类似 java.lang.String # F0454的内容

对不起,我对地图不太熟悉,你可能已经猜到了;)

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

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

恐怕你的问题一点也不清楚。一个键没有“名称”; 就 map 而言,它没有“称为”任何东西——它只是一个键,并将与其他键进行比较。如果你有很多不同种类的钥匙,我强烈建议你把它们放在不同的地图上,以保持头脑清醒。

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

map.get(myCode)

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

如果您将键/值存储为字符串,那么这个方法可以工作:

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

问题是在 HashMap (key & value)中填充什么

如果使用泛型并将映射定义为

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

然后取值为

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

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

这里需要注意的一点是,如果您的键是 Java 中用户定义类的一个对象,那么应该重写 equals 方法。因为 HashMap.get (Object key)方法使用 equals 方法来匹配键值。如果你没有重写 equals 方法,那么它将尝试仅仅根据键的引用而不是键的实际值来寻找值,在这种情况下它将总是返回一个 null。

假设您将 HashMap 声明为:-

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

地图中的关键字是字符数据类型和整型值。现在,要获取与键对应的值,不管键的类型、值类型如何,语法是:-

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

因此,根据您的问题,您希望获得与键对应的字符串值。为此,只需将 HashMap 声明为 HashMap < “ datatype of key”,“ datatype of value”hs = new HashMap < > () ; 使用这种方法可以使代码更加清晰,而且您也不必将 hs.get (“ my _ code”)的结果转换为 string,因为在默认情况下,如果在输入时保持值为字符串,那么它将返回 string 的值。

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

映射到键 4的值是 DD

这是如何使用 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());