StringBuilderをどのようにクローンすることができますか?私はビットでファイルを読んでいますし、これらのビットをASCII文字に変換した後、文字列ビルダーに文字を集め、たとえば8文字の文字列ビルダーをArray Listに入れます。それから私はそれをきれいにし、同じことをやり直します。しかし、私はメモリのために新しい文字列ビルダーを作成することはできませんし、配列リストでもBuilderが変更されるため、文字列ビルダーに変更を加えることはできません。clone()StringBuilder
私はその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;
は「私が原因でメモリの新しい文字列ビルダを作成することはできません」を参照してください。これはあなたを助ける? – DNA
'new StringBuilder(oldbuilder.toString())'は、StringBuilderをコピーする最も簡単な方法です。実際にあなたが達成しようとしていることを説明していないので、代わりにStringBuilderからStringを格納するだけで済みます。 – DNA
ヤップはとにかく助けにならないと理解しました。だから、私はオプションからこのcharacters.add(新しいStringBuilder(sb)); java outOffMemory例外を返す – Streetboy