어떻게하면 StringBuilder를 복제 할 수 있습니까? 문자열 빌더에 문자를 수집 한 후이 비트를 ASCII 문자로 변환하여 파일을 읽었습니다. 예를 들어 8자를 가질 때 문자열 빌더 객체를 배열 목록에 넣었습니다. 그 다음 나는 그것을 깨끗하게하고, 다시 똑같이한다. 그러나 메모리 때문에 새로운 문자열 작성기를 작성할 수 없으며 배열 목록에서 빌더가 변경되므로 해당 문자열 작성기를 변경할 수 없습니다.clone() StringBuilder
그래서 String Builder를 복제하여 Array List에 넣어야한다고 생각합니다. String Builder에는 clone()이 하나만있는 문제가 있습니다. 그럼 내 대안은 무엇입니까?
어쩌면 누군가가 성능과 메모리에 대해 고려해 보았을 때 깔끔한 방법이 무엇인지 알 수있었습니다.
ArrayList characters = new ArrayList(); int counter = 0; 새 StringBuilder
을 만들 수있는 메모리가없는 경우
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;
"나는 때문에 메모리의 새로운 캐릭터 빌더를 만들 수 없습니다"를 참조하십시오 이게 당신 도움이 되나요? – DNA
'new StringBuilder (oldbuilder.toString())'는 StringBuilder를 복사하는 가장 간단한 방법입니다. 실제로 무엇을 하려는지 설명하지 않았으므로 대신 StringBuilder에서 String을 저장할 수 있습니다. – DNA
Yap은 어쨌든 도움이되지 않을 것이라고 이해했습니다. 그래서 난이 옵션으로 인해 character.add (new StringBuilder (sb)); 자바 outOffMemory 예외를 준다. – Streetboy