2015-11-07 86 views
-1

如何使用String来指定特定的HashMap使用带有hashmaps的字符串

如:

public static ConcurrentHashMap<String, Integer> age = new ConcurrentHashMap<String, Integer>(); 
String s = "age"; 
s.get("Nick"); 
+0

“*使用一个字符串指定特定的HashMap中。*” 这是语无伦次。你究竟在做什么? – dimo414

+0

s是您的案例中的字符串。我想你的意思是age.get(“Nick”)而不是s.get(“Nick”) –

回答

0

如果你想一个人的名字映射到自己的年龄,你需要

Map<String,Integer> age = new HashMap<>(); // only use ConcurrentHashMap if you intend 
              // to use that Map from multiple threads 
... 
age.put("Nick",42); 
... 
int nicksAge = age.get("Nick"); 
+0

好的,但是我正在寻找的是暂时使用该字符串来引用地图的名称。如果你看看我的例子,我使用的字符串'已被分配“年龄”被用作散列表的名字是年龄。 (如果这是有道理的) – NickM

+0

@NickMandylas你试过的是不可能的。 's'是一个'String',而不是'HashMap'。它没有get方法。 – Eran

0
public class HashMapTest { 
    public static HashMap<String, Integer> ageMap = new HashMap<String, Integer>(); 

    public static void main(String[] args) { 
     ageMap.put("Nick", 12); 
     Integer age = ageMap.get("Nick"); 
     System.out.println(age); 

    } 

} 
0

你可以做到这一点使用泛型

https://docs.oracle.com/javase/tutorial/java/generics/

泛型允许您指定地图的类型。因此,而不是使用

public static ConcurrentHashMap age = new ConcurrentHashMap(); 

你可以使用

public static Map<String, Short> age = new ConcurrentHashMap<>(); 

或地图例如

public static Map<String, Integer> ageMap = new HashMap<>(); 

任何其他形式,简化了get和put操作。

不需要编写代码,如

Object o = ageMap.get("Nick"); 
if(o instanceof Integer) { 
    Integer age = (Integer) o; 
} 

你可以简单地写

Integer age = ageMap.get("Nick");