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

Using .equals() in while loop causing program to hang on execution

我有以下 while 循环:

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

vlt.getvault_name returns 保管库名称为字符串,保管库也是字符串。我的程序以此运行,但是当条件确实为真时,byteCount 永远不会增加。然后我意识到我应该在比较 String 值时实际使用 .equals() ,因此如下更改了我的循环。

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

现在我正在尝试调整我的程序,但它似乎已挂起。它一直坐着好像试图执行 45 分钟,而通常需要大约 30 秒。虽然没有错误。

因为这是唯一改变的地方,我的问题是使用 .equals() 是否对性能有任何影响?

我相信这是因为 while 循环已经变成了无限循环。在每次迭代期间,while 循环使用字符串检查同一对象的值。对于这种情况,与 while 循环相比,您似乎需要一个 if 条件。