当我尝试查找刚刚放入hashmap的值时,为什么会出现Runtime异常?

时间:2015-06-27 18:32:17

标签: java string hashmap

有人可以向我解释为什么以下代码段会引发运行时异常吗?

int i = 0;
for ( ; i < TOTAL; i++ ) {
    String value = "" + i;
    int key = numbers[i];                
    map.put(key, value);
}

i = 0;
for ( ; i < TOTAL; i++ ) {
    String value = "" + i;
    int key = numbers[i];
    String valueInMap = map.get(key);
    if(valueInMap == null || !valueInMap.equals(value)) {
        throw new RuntimeException("Impossible!");
    }
}

这是整个程序,除了我用随机数填充numbers[]的部分。

我指的是throw new RuntimeException("Impossible!");我得到了这个例外

1 个答案:

答案 0 :(得分:6)

  

我用随机数填充numbers[]

您收到异常,因为并非TOTAL中的numbers[]个项目中的所有值都是唯一的。发生这种情况时,新值会覆盖旧值,因此在第二个循环中会得到错误的结果。

要确保永远不会发生这种情况,请先将TOTAL随机值放入HashSet<Integer>,然后再将其复制到numbers[]数组中。