How to clone() StringBuilder
有一些方法可以克隆StringBuilder吗? 我正在按位读取文件,然后将这些位转换为ASCII字符,然后将字符收集到String builder中,例如当我有8个char时,我将该String Builder对象放入Array List。 然后我将其清洁,然后再次执行相同操作。 但是,由于内存原因,我无法创建新的字符串生成器,也无法更改该字符串生成器,因为在数组列表中,该生成器也会更改。
因此,我认为我必须克隆该String Builder并将其放入"数组列表"。 字符串生成器没有clone()只是一个问题。 那我有什么选择呢?
也许有人可以提出一些想法,考虑到性能和内存,这是什么好方法。
ArrayList字符=新的ArrayList();
int计数器= 0;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | StringBuilder sb = new StringBuilder(blockSize-1); while (mbb.hasRemaining()) { char charAscii = (char)mbb.get(); counter++; charCounter++; if (counter == blockSize){ sb.append(charAscii); characters.add(sb);//sb.toString() sb.delete(0, sb.length()); counter = 0; }else{ sb.append(charAscii); } if(!mbb.hasRemaining()){ characters.add(sb); } } fc.close(); return characters; |
如果您没有创建新的
如果获取的是
您可以通过以下方式清除
1。
1 | sb.delete(0, sb.length()) |
2。
1 2 | sb = null; sb = new StringBuilder(); |
对于性能,1.是更好的选择。 但是您还是无法克隆它。 有关克隆的更多信息,请参见
- 浅拷贝和深拷贝
- 克隆