我是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这是我的借口)答案 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);
}