我有关于使用StringBuilder的性能相关问题.在一个很长的循环中,我正在操纵a StringBuilder并将其传递给另一个方法,如下所示:
for (loop condition) {
    StringBuilder sb = new StringBuilder();
    sb.append("some string");
    . . .
    sb.append(anotherString);
    . . .
    passToMethod(sb.toString());
}
StringBuilder在每个循环周期实例化是一个很好的解决方案吗?并且更好地调用删除,如下所示?
StringBuilder sb = new StringBuilder();
for (loop condition) {
    sb.delete(0, sb.length);
    sb.append("some string");
    . . .
    sb.append(anotherString);
    . . .
    passToMethod(sb.toString());
}
我有一个条件,StringBuilder保持存储与大平面文件(100的MB)模式匹配的行.但是在达到条件后,我将StringBuilder varialble的内容写入文本文件.
现在我想知道是否应该通过重置对象来使用相同的变量 - >
stringBuilder.delete(0,stringBuilder.length())
要么
stringBuilder=new StringBuilder();
请提出一下,就性能和OOM问题而言,您认为哪种方式更好.
我有一个管道分隔文件,我解析它以获取系统选项.环境对堆分配很敏感,我们正在尝试避免垃圾回收.
下面是我用来解析管道分隔字符串的代码.该函数调用约35000次.我想知道是否有更好的方法不能创造更多的内存流失.
static int countFields(String s) {
    int n = 1;
    for (int i = 0; i < s.length(); i++)
        if (s.charAt(i) == '|')
            n++;
    return n;
}
static String[] splitFields(String s) {
    String[] l = new String[countFields(s)];
    for (int pos = 0, i = 0; i < l.length; i++) {
        int end = s.indexOf('|', pos);
        if (end == -1)
            end = s.length();
        l[i] = s.substring(pos, end);
        pos = end + 1;
    }
    return l;
}
编辑1,关于java版本:
出于商业原因,我们坚持使用JDK 1.6.0_25.
编辑2关于String和String …
可能的重复:
如何清除/清空 Java Stringbuilder
我正在向字符串添加值,然后在文本视图中显示它,但是当我刷新页面时,它不会先清除字符串。
它只是不断地添加它。
有没有办法清除android中的字符串生成器?
到目前为止我尝试过的
StringBuilder sb = new StringBuilder();
sb.delete(0,sb.length());
for (String s : awayScores)
{
    sb.append(s);
    sb.append("\n");
}
StringBuilder sb2 = new StringBuilder();
sb2.delete(0,sb2.length());
for (String h : homeScores)
{
    sb2.append(h);
    sb2.append("\n");
}
 String awayeve = sb.toString();
 String homeeve = sb2.toString();
Log.v("home", "homeeve" + homeeve);
Log.v("home", "awayeve" + awayeve);