2015-11-05 72 views
0

我是新來的Java我只是讀有關哈希表,並想知道如何操縱它們。添加到在一個Hashtable【JAVA]值

例如,如果我有一個表

Hashtable<String, Integer> goalScorers = new Hashtable<String, Integer>(); 

和我的名字作爲重點,並在0

goalScorers.put("Ronaldo", 0); 
goalScorers.put("Messi", 0); 

整數值填充它是有辦法,我可以做一個方法,例如as

public void addGoals(String, int) 

可以將int值添加到作爲字符串放入的相應播放器中。因此,如果羅納爾多得分爲2,我可以將2添加到當前分配給該鍵的任何值(所以0 + 2,然後下一次2 +無論什麼int值)?

編輯:感謝球員,很明顯,現在我已經看到了(這是上午12:30因此多數民衆贊成我的藉口)

+0

是。您可以。 :) –

+0

是的,你需要通過參考你的哈希表的addGoals功能......或讓你的射手全球 –

回答

0
Assuming your Hashtable is global: 

public void addGoals(String name, int goals) 
{ 
    goalScorers.put(name, goalScorers.get(name) + goals); 
} 
0

我不知道的困惑是什麼在這裏,但這裏一個可行的辦法做什麼你在回絕利用HashTable#get

public void addGoals(String player, int score) { 
    goalScorers.put(player, goalScorers.get(player) + score); 
} 
2

是的,你可以得到當前的分數與方法​​。請注意,如果玩家尚未出現在表格中,它將返回null。

例如:

public void addGoals(String player, int add) 
    Integer currentScore = goalScorers.get(player); 
    int newScore = (null == currentScore) 
     ? add 
     : currentScore + add; 
    goalScorers.put(player, newScore); 
} 

順便說,舊類HashTable是同步的。如果你不需要這個,請考慮使用HashMap

+0

好您檢查空,你讓它(有點)明確表示,內部地圖正在使用一個Integer。 – user949300

1

在Java 8,你可以做

goalScorers.merge("Ronaldo", 2, Integer::sum); 

這將會把價值2,如果沒有已經爲"Ronaldo"的條目,或添加到2現有條目,如果有一個。