如何克隆()StringBuilder

Str*_*boy 5 java memory stringbuilder netbeans arraylist

有什么办法可以克隆StringBuilder吗?我正在按位读取文件,然后将这些位转换为ASCII字符,之后我将字符集收集到字符串构建器中,当我有8个字符时,我将字符串生成器对象放入数组列表中.然后我清理它并再次做同样的事情.但是由于内存而无法创建新的字符串构建器,因此无法对该"字符串"构建器进行更改,因为在"阵列列表"中也会更改该构建器.

所以我想我必须克隆String Builder并将其放入Array List.只有一个问题String Builder没有clone().那么我的替代方案是什么?

考虑到性能和内存,也许有人可以提供一些简洁的方法来做这件事.

ArrayList characters = new ArrayList(); int counter = 0;

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;
Run Code Online (Sandbox Code Playgroud)

Lou*_*man 17

如果你没有内存来创建一个新的StringBuilder,那么你没有内存来创建一个新的StringBuilder,克隆不会改变它.复制a的唯一真正方法StringBuildernew StringBuilder(myBuilder),或类似的东西.

如果你得到了OutOfMemoryException,你需要获得更多的内存,或者找到其他方法来减少内存消耗.