2015-05-27 115 views
1

我想要添加一个哈希映射到哈希集内的对象。添加到哈希映射内的哈希集

这里gamesAndTeams是一个HashMap,它包含一个Hashset。

我已经看过网上的一些教程,但我试图不工作。
我做错了什么?

Match newmatch = new Match(dateOfGame, stad, guestTeam, hostTeam, hostGoals, guestGoals); 
gamesAndTeams.put(key, gamesAndTeams.get(key).add(newmatch)); 
+0

哪一个是你的'HashSet',哪一个是你的'HashMap'? – Razib

+0

您应该添加观察和期望的输出。 – Turing85

+0

这个问题已经得到解答,但对于未来的人来说,这个问题正在探索:gamesAndTeams是一个HashMap,它包含一个Hashset。 –

回答

1

是的。

假设gamesAndTeams已经有key的条目,你只是想

gamesAndTeams.get(key).add(newmatch); 

...你不需要任何put在地图上,除非它是以前没有的地图都没有。

+0

这工作!大! –

2

您必须先检查密钥是否存在于HashMap中。如果没有,你应该创造的价值HashSet,并把它放在HashMap

if (gamesAndTeams.containsKey(key)) 
    gamesAndTeams.get(key).add(newmatch); 
else { 
    HashSet<Match> set = new HashSet<>(); 
    gamesAndTeams.put(key,set); 
    set.add(newmatch); 
} 

HashSet<Match> set = gamesAndTeams.get(key); 
if (set == null) { 
    set = new HashSet<>(); 
    gamesAndTeams.put(key,set); 
} 
set.add(newmatch); 
+0

'set'在这段代码中被复制。 – Turing85

+0

代码的第二个版本有一个错误。 –

+0

@LouisWasserman谢谢。当我从第一个片段复制它时,我忘记删除'HashSet '。 – Eran