Czy jest jakiś sposób na sklonowanie StringBuilder? Odczytuję pliki bitami, a następnie konwertuję te bity na znaki ASCII po tym, jak zbieram znaki w konstruktorze ciągów, a gdy mam na przykład 8 znaków, wstawiam ten obiekt Konstruktora String na listę macierzy. Potem czyściłem i znowu robiłem to samo. Jednak nie mogę utworzyć nowego konstruktora ciągów z powodu pamięci i nie mogę wprowadzać zmian do tego konstruktora String, ponieważ na liście macierzy również ten konstruktor się zmienia.Jak klonować() StringBuilder
Myślę więc, że muszę sklonować tego Konstruktora Ciągów i umieścić go na liście Array. Jest tylko jeden problem. Konstruktor String nie ma clone(). Więc jakie są moje alternatywy?
Może ktoś mógłby podać kilka pomysłów, jak to zrobić, biorąc pod uwagę wydajność i pamięć.
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;
„Nie mogę utworzyć nowy ciąg, ponieważ budowniczy pamięci” - sklonowanym StringBuilder użyje podobną ilość pamięci, więc w jaki sposób to ci pomoże? – DNA
'new StringBuilder (oldbuilder.toString())' jest najprostszym sposobem na skopiowanie StringBuilder. Nie wyjaśniłeś dokładnie, co próbujesz osiągnąć, więc możesz być w stanie przechowywać String z StringBuilder zamiast tego. – DNA
Yap zrozumiał, że i tak to nie pomoże. Więc jestem poza opcjami, ponieważ this characters.add (new StringBuilder (sb)); daje wyjątek java outOffMemory – Streetboy