性能 - 方法在循环中使用+连接字符串

时间:2014-09-26 08:01:44

标签: java sonarqube

我在这行代码中遇到了这个问题,即使我在循环中使用.append()。

for (final FieldError fieldError : result.getFieldErrors()) {
    errors = new StringBuilder(errors).append(fieldError.getField()).append(" - ")
     .append(getErrorMessageFromProperties(fieldError.getCode())).append("*").toString();
}

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:7)

您可以在StringBuilder循环之外创建for并重复使用。

StringBuilder sb=new StringBuilder();
for (final FieldError fieldError : result.getFieldErrors()) {
      sb.append(fieldError.getField())
           .append(" - ")
           .append(getErrorMessageFromProperties(fieldError.getCode()))
           .append("*");
 } 

将所有内容追加到sb后,您可以致电

 String error=sb.toString()

for循环

之后

答案 1 :(得分:1)

每次要读取数据库表时,都使用循环。随着数据库表的增长,循环中的迭代次数也相应增加。因此,您希望避免迭代中的任何操作,这些操作在性能方面可能成本很高。此外,这是一种在质量保证期间或应用程序年轻时无法检测到的缺陷,其中包含一个记录很少的测试数据库。

避免在循环中进行字符串连接,在内存中创建对象等。