2

stringbuilder で長さに合わせてトリミングします。

何を使えばいいですか?

StringBuilder sb = new StringBuilder("203253/62331066                          ");
StringBuilder sb1 = new StringBuilder("203253/62331066                          ");
int newLen = Math.min(sb.length(), ACCT_LENGTH);
sb = new StringBuilder(sb.substring(0, newLen));
sb1.setLength(newLen);
System.out.println(sb);
System.out.println(sb1);

setLength(newLength)または?new StringBuilder_substring()

4

3 に答える 3

2

新しい StringBuilder の種類を作成すると、単に String ではなく、StringBuilder を使用する目的が無効になります...つまり、新しいオブジェクトを作成する代わりにバッファリングします。したがって、setLength() に投票します。

于 2013-03-20T18:18:29.147 に答える
2

setLength何も変更せずに StringBuilder のサイズを追跡する内部カウンターを変更するだけなので、より効率的です (もちろん、新しい長さが小さいと仮定します)。

substring配列のコピーを意味する新しい String を作成します。

于 2013-03-20T18:34:39.193 に答える
0

それはあなたが何をしようとしているのかによります。

使い終わって、StringBuilderトリミングする予定の部分を再利用しない場合、使用しない正当な理由は思いつきません。setLengthメモリ コストがありません。substring新しいインスタンスを作成し、内部の文字配列を複製します。

一方、イニシャルのコンテンツを引き続き使用するつもりであるStringBuilderが、部分文字列を格納するために別のインスタンスが必要な場合substringは、より良い選択です。

具体的には、あなたが貼り付けたコードの中で、使い続けるのsbか、それとも破棄して作業sb1のみを行うのか。前者の場合は 、後者の場合は を使用しsubstringますsetLength

于 2013-03-20T18:37:59.233 に答える