从hashmap中删除

时间:2014-08-02 16:26:47

标签: hashmap int

好的,所以我有这么简单的代码,但我无法弄清楚它为什么不起作用......

int redscre = teamScore.get(TeamType.RED);
int redscore = redscre--;
teamScore.put(TeamType.RED, redscore);

2 个答案:

答案 0 :(得分:0)

这是贬低你的后减法运算符:

int redscore = redscre--;

这是发生的事件序列:

  1. redscre的值已分配给redscore
  2. redscre递减,redscore未更改
  3. 然后将未更改的redscore值放回到hashmap中。

    更改为预减量运算符以使其有效:

    int redscre = teamScore.get(TeamType.RED);
    teamScore.put(TeamType.RED, --redscre);
    

    或者如果你想更明确地做事:

    int redscre = teamScore.get(TeamType.RED);
    int redscore = redscre - 1;
    teamScore.put(TeamType.RED, redscore);
    

    这个wikipedia article提供了关于前后增量/减量运算符之间差异的一个很好的解释。

答案 1 :(得分:0)

问题是你正在使用post decrement运算符。

Redscrore设置为redscr的值,然后redsrc递减

试试这个:

int redscre = teamScore.get(TeamType.RED);
int redscore = redscre - 1;  // This statement returns the proper value.
teamScore.put(TeamType.RED, redscore);

另一个解决方案是使用预递减运算符(redscroe = --redscr),但看到redscr只是一个临时的,实际上没有充分的理由这样做。