添加到Hashtable中的值[Java]

时间:2015-11-05 23:13:31

标签: java hashtable

我是java新手,我只是在阅读关于Hashtables的内容,并且想知道如何操纵它们。

例如,如果我有一张桌子

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

我填充了名称作为键,整数值填充为0

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

有没有办法制作像

这样的方法
public void addGoals(String, int) 

可以将int值添加到以字符串形式输入的相应播放器中。因此,如果罗纳尔多得分为2,我可以将2添加到当前分配给该键的任何值(所以0 + 2然后下一次2 +任何int值)?

编辑:谢谢你们,很明显我现在已经看到了(上午12:30这是我的借口)

4 个答案:

答案 0 :(得分:2)

是的,您可以使用方法HashTable.get(Object key)获取当前分数。请注意,如果播放器尚未出现在表格中,则会返回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

答案 1 :(得分:1)

在Java 8中,你可以做到

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

如果还没有2的条目,那么会将值"Ronaldo"放置,或者如果有条目,则将2添加到现有条目。

答案 2 :(得分:0)

我不确定这里有什么混乱,但是这里有一种可能的方式来做你要求利用的HashTable#get

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

答案 3 :(得分:0)

Assuming your Hashtable is global:

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