2014-09-26 62 views
2

即使我在循环中使用.append(),我在这行代码中遇到此问题。性能 - 方法连接在循环中使用+的字符串

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

我该如何解决这个问题?

+2

问题是什么? – 2014-09-26 08:02:56

+0

性能 - 方法在循环中使用+连接字符串 – james 2014-09-26 08:04:16

+0

@james您正试图优化错误? – 2014-09-26 08:05:16

回答

7

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

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

附加所有sb后,你可以只是for

1

要读取的数据库表中的每个时间后打电话

String error=sb.toString() 

,您可以使用一个循环。随着数据库表的增长,循环中的迭代次数也相应增加。所以你想避免迭代中的任何操作,在性能方面可能是昂贵的。此外,这是您在QA期间或应用程序年轻时无法检测到的缺陷类型,并且测试数据库的记录很少。

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

相关问题