我有以下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()会对性能产生影响吗?
答案 0 :(得分:1)
我相信这种情况正在发生,因为while循环已经转变为无限循环。在每次迭代期间,while循环使用字符串检查同一对象的值。对于这种情况,看起来你需要一个if条件和一个while循环。