在while循环中使用.equals()导致程序在执行时挂起

时间:2017-04-24 19:01:50

标签: performance while-loop string-comparison

我有以下while循环:

Vault vlt = mapper.readValue(currentLine, Vault.class);
while(vlt.getvault_name() == vault)){
                        byteCount += vlt.getBytes();
}

vlt.getvault_name将Vault名称作为String返回,Vault也是String。我的程序运行时,但条件确实为true,byteCount永远不会增加。然后我意识到我应该在比较String值时实际使用.equals(),因此我的循环更改如下。

Vault vlt = mapper.readValue(currentLine, Vault.class);
while(vlt.getvault_name().equals(vault)){
                        byteCount += vlt.getBytes();
}

现在我试图修改我的程序,但它似乎悬而未决。它通常需要大约30秒时,就好像试图执行45分钟一样。但是没有错误。

由于这是唯一改变的问题,因此使用.equals()会对性能产生影响吗?

1 个答案:

答案 0 :(得分:1)

我相信这种情况正在发生,因为while循环已经转变为无限循环。在每次迭代期间,while循环使用字符串检查同一对象的值。对于这种情况,看起来你需要一个if条件和一个while循环。