2015-11-07 87 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");