47

文字列を追加する必要があるJavaプログラムを作成しました

" u13a2"既存のものに"u1234 u12de u1386 ... u15a3"

そのため、徐々に弦が長くなります。それぞれの追加に費やす時間もどんどん長くなっていることがわかりました。これをある程度改善できる方法はありますか?

私の頭に浮かんだ実装は次のとおりです。

unicodeArray += " "+unicode;

また

unicodeArray = unicodeArray.concat(" "+unicode);

彼らは同様のパフォーマンスを示しました。これらのパフォーマンスの低下の主な原因は、特殊なタイプだと思いますString。割り当てごとに新しいオブジェクトを作成します。あなたもそう思うなら、これは私がバイト配列のような別のタイプを使うほうがよいという意味ですか?

4

5 に答える 5

107

StringBuilderクラスを使用する必要があります。

StringBuilder stringBuilder = new StringBuilder();

stringBuilder.append("Some text");
stringBuilder.append("Some text");
stringBuilder.append("Some text");

String finalString = stringBuilder.toString();

さらに、次のサイトにアクセスしてください。

于 2012-10-15T16:33:02.773 に答える
35

StringBuilderクラスを使用します。それはあなたがやろうとしていることでより効率的です。

于 2012-10-15T16:31:48.943 に答える
8

StringBufferまたはこれに使用できますStringBuilder。どちらも動的な文字列操作用です。StringBufferスレッドセーフでStringBuilderはありませんが、そうではありません。

StringBufferマルチスレッド環境で使用します。ただし、シングルスレッドの場合はStringBuilder、が推奨され、よりもはるかに高速ですStringBuffer

于 2012-10-15T16:32:03.717 に答える
2

-追加または変更を加えるたびに、新しいStringオブジェクトが作成されます。

-したがって、 (スレッドセーフが重要でないappend()場合)の方法を使用し、そうでない場合は(スレッドセーフ重要な場合)を使用します。これは効率的な方法です。StringBuilderStringBuffer

于 2012-10-15T16:34:07.053 に答える
0

java.lang.StringBuilder。intコンストラクターを使用して初期サイズを作成します。

于 2012-10-15T16:32:46.923 に答える