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的唯一真正方法StringBuilder是new StringBuilder(myBuilder),或类似的东西.
如果你得到了OutOfMemoryException,你需要获得更多的内存,或者找到其他方法来减少内存消耗.
| 归档时间: |
|
| 查看次数: |
14445 次 |
| 最近记录: |