Có cách nào để tôi có thể sao chép StringBuilder không? Tôi đọc các tập tin bằng bit sau đó chuyển đổi các bit thành ký tự ASCII sau đó tôi thu thập ký tự thành Trình xây dựng chuỗi và khi tôi có ví dụ 8 ký tự, tôi đặt đối tượng String Builder đó vào Danh sách mảng. Sau đó, tôi làm sạch nó và một lần nữa làm như vậy. Tuy nhiên tôi không thể tạo trình tạo chuỗi mới vì bộ nhớ và tôi không thể thực hiện các thay đổi đối với Trình tạo chuỗi đó bởi vì trong Danh sách mảng cũng thay đổi trình xây dựng đó.Cách sao chép() StringBuilder
Vì vậy, tôi nghĩ rằng tôi phải sao chép String Builder và đặt nó vào Danh sách mảng. Chỉ có một vấn đề String Builder không có bản sao(). Vậy lựa chọn thay thế của tôi là gì?
Có thể ai đó có thể đưa ra một số ý tưởng về cách thức gọn gàng để làm điều này xem xét về hiệu suất và bộ nhớ.
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;
"tôi không thể tạo xây dựng chuỗi mới vì bộ nhớ" - một StringBuilder nhân bản sẽ sử dụng một lượng tương tự như bộ nhớ, vậy làm thế nào sẽ điều này giúp bạn? – DNA
'StringBuilder mới (oldbuilder.toString())' là cách đơn giản nhất để sao chép một StringBuilder. Bạn đã không thực sự giải thích những gì bạn đang cố gắng để đạt được, vì vậy bạn có thể chỉ cần lưu trữ các String từ StringBuilder để thay thế. – DNA
Yap hiểu rằng nó sẽ không giúp được gì. Vì vậy, tôi ra khỏi các tùy chọn bởi vì ký tự này.add (StringBuilder mới (sb)); đưa ra ngoại lệ java outOffMemory – Streetboy