2013-12-19 104 views
0

这是我的HashMap:哈希映射在哈希表尝试插入一些

protected HashMap<String, HashMap<String, Player>> prisonsPlayers = new HashMap<String, HashMap<String, Player>>(); 

我尝试插入它的东西:

prisonsPlayers.put(player.getWorld(), (HashMap<player.getName(), player>)); 

Erorr我得到:

Multiple markers at this line 
    - Syntax error, insert ")" to complete 
    Expression 
    - Syntax error on token ")", invalid 
    Expression 

我知道我做错了什么,但是我尝试了,我做了什么,我不知道如何将该数据插入到我的散列表中。有人能帮助我吗?

+1

不,泛型是编译时间,而不是运行时间。您不能将方法返回的值用作类型参数。也请查看Java语法。实际上,取消关于泛型的所有知识,并从Java泛型教程开始。 –

回答

2

此行

prisonsPlayers.put(player.getWorld(), (HashMap<player.getName(), player>)); 

应该是这样

Map<String, Player> map = new HashMap<String, Player>(); 
map.put(player.getName(),player); 
prisonsPlayers.put(player.getWorld(), map); 
+0

真的,我在代码中使用了更多的hashmaps,像这样你确定吗?: \t protected HashMap freePlayers = new HashMap (); \t \t protected HashMap loggedPlayers = new HashMap (); (String,HashMap >)prisonsPlayers = new HashMap >(); – user3009924

0

语法错误(或者逻辑,太?)

prisonsPlayers.put(player.getWorld(), (HashMap<player.getName(), player>)); 

尝试这样做

prisonsPlayers.put(player.getWorld(), (new HashMap<String, Player>())); 
prisonsPlayers.get(player.getWorld()).put(player.getName(), player); 
+0

感谢您的回答,但您的代码将我标记为“put”并且说:链接所有本地重命名引用(不会在其他文件中更改引用 ) – user3009924

0

Prabhkaran是完全正确的,有答案将工作。

代码

HashMap<player.getName(), player> 

是无效的,因为你是供应对象为HashMap的通用参数,并且他们应该是类定义。

例子:

// Construct a HashMap with can contain Strings as keys and values 
HashMap<String, String> mymap = new HashMap<String, String>(); 

// add Strings to my hashmap 
mymap.put("hello","world"); 

是确定的,但

// compilation failure! 
new HashMap<"Hello","World">(); 

不是。