2015-05-27 229 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