1

想知道使用它的最佳方法是什么:

StringBuilder query = new StringBuilder(" Select * from mytable t where ");
for ( Object object : objects ) {
     query.append(" t.field = " + object.field ); // this one OR
     query.append( object.field );                // this one? 
}

不确定推荐使用哪一个。

4

3 回答 3

6

字符串生成器要快得多,因此不建议连接超过 3-4 个字符串(循环外),绝对不要在循环中,我建议你这样做:

for ( Object object : objects ) {
     query.append(" t.field = ");
     query.append( object.field ); 
}
于 2013-07-07T16:32:06.267 回答
2

两个单独的调用append更好。在幕后,使用+on 字符串会导致StringBuilder创建一个来执行连接。因此,您想要:

  1. +使用(在您的动态情况下不起作用)一次性连接所有字符串,或

  2. 对您正在构建的每一小段字符串使用显式StringBuilder调用(不要在任何地方使用)。append+

于 2013-07-07T16:34:25.953 回答
1

使用附加。但是,请注意,如果您执行的循环相对较少(例如 10 - 20),那么使用 StringBuilder 并不重要,您可能看不到任何性能改进。

于 2013-07-07T16:34:16.760 回答