2

重複の可能性:
JavaでStringBuilderを使用する場合

そうでない場合は、これらのコードのどれが優れているか、そしてその理由

public String backAround(String str) {
   int len = str.length();
   StringBuilder sb = new StringBuilder(str);
   char chEnd = sb.charAt(len-1);
  if(len > 0){
  sb = sb.append(chEnd);
  sb= sb.insert(0,chEnd);

  str= sb.toString();
  return str;

  }else{ return str;}
}

また

public String backAround(String str) {
  // Get the last char
  String back = str.substring(str.length()-1, str.length());
  return back + str + back;
}
4

2 に答える 2

6

backAround()メソッドのように「いくつかの要素をくっつける」だけの場合は、+表記を使用することもできます。コンパイラはこれを適切なStringBuilder.append()に変換するので、なぜわざわざ「スペルアウト」するのですか。

StringBuilderを明示的に使用するという考え方は、原則として、要素が文字列に追加される方法を手動で最適化できることです。これには、初期バッファ容量の設定や、コンパイラはこれらのことを予測しないかもしれません。

したがって、基本的に、文字列に何を追加するかを決定するためのロジックが少し複雑な場合は、StringBuilderを明示的に使用します。たとえば、ループ内で物事を追加する場合、または追加される場所は、さまざまなポイントでのさまざまな条件によって異なります。StringBuilderを使用する可能性のある別のケースは、文字列をさまざまなメソッドから構築する必要がある場合です。たとえば、StringBuilderをさまざまなメソッドに渡して、さまざまな要素を追加するように依頼できます。

PS StringBuilderを使用すると、編集能力も少し向上し(たとえば、長さを設定できます)、Appendableインターフェイスが存在する場合は、StringBuilderに追加するより一般的なメソッドを実際に作成できます。または、たとえばStringWriterに。しかし、これらはごくわずかなケースです、私は提出します。

于 2012-06-04T01:02:20.853 に答える
1

それは本当にあなたがやろうとしていることに依存します。あなたの場合、文字列を取り、最後の文字を取り、それを前に追加してから、最後に別の文字を追加しようとしているようです。このために私はおそらくこれを行うでしょう:

public String manipulate(String string)
{
    char c = string.charAt(string.length);
    return c + string + c;
}

この場合、StringBuilderを使用する必要はありませんでした。StringBuilderクラスが役立つ場合があります。StringBuilderで実行できるStringでは実行が難しいことがいくつかあります。

  • インデックスで文字を削除する
  • インデックスに文字を追加する
  • 特定のシーケンスのインデックスを取得します
  • そしてはるかに

StringBuilderのドキュメントを見たい場合は、次のようにします。

文字列ビルダー

これがお役に立てば幸いです。

于 2012-06-04T00:28:42.183 に答える