StringBuilder'i nasıl klonlayabileceğimin bazı yolları var mı? Dosyaları bitlerle okuyorum ve sonra bu bitleri ASCII karakterlerine dönüştürüyorum. Ardından, String oluşturucuya chars topladım ve örneğin 8 karaktere sahip olduğumda, bu String Builder nesnesini Dizi Listesine yerleştirdim. Sonra temizlerim ve tekrar aynısını yaparım. Ancak, bellek nedeniyle yeni dize oluşturucu oluşturamıyorum ve bu Dize oluşturucuda değişiklik yapamıyorum çünkü Array Listesinde bu oluşturucu değişiyor.Nasıl klonlanır() StringBuilder
Sanırım bu String Builder'ı klonlamam ve Array List'e koymam gerekiyor. Sadece bir sorun var String Builder'da clone yok(). Peki benim alternatiflerim nedir? Belki birileri, performans ve bellek ile ilgili olarak bunu yapmak için düzgün bir yol olan bazı fikirler verebilirdi.
ArrayList characters = new ArrayList(); int sayaç = 0; Yeni StringBuilder
oluşturmak için bellek yoksa
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;
"i nedeniyle belleğin yeni dize oluşturucu oluşturamazsınız" bakın Bu size yardımcı olur mu? – DNA
'yeni StringBuilder (oldbuilder.toString())' bir StringBuilder'ı kopyalamanın en kolay yoludur. Gerçekte neyi başarmaya çalıştığınızı açıklamıyorsunuz, bu yüzden String'i StringBuilder'dan saklayabiliyordunuz. Yapım, – DNA
Yaptı ki, bunun bir işe yaramayacağını anladı. Bu yüzden bu karakterlerin dışında bir seçenekim var.add (yeni StringBuilder (sb)); java outOffMemory istisnasını verir – Streetboy