次のようなコード行があります。ここで私の質問はどれが好きですか?文字列変数の連結
public static String convertMapToString (Map < String, String > map)
{
StringBuilder str = new StringBuilder (200) ;
for (Entry < String, String > entry : map.entrySet ())
{
str.append (entry.getKey() + " = " + entry.getValue()) ;
}
return str.toString() ;
}
または私はappned文は上記の各反復で+
操作 の結果として、2つの以上の追加の文字列を作成することを疑うので、私は次のように行く必要があります。従来の知恵によって
public static String convertMapToString (Map < String, String > map)
{
StringBuilder str = new StringBuilder (200) ;
for (Entry < String, String > entry : map.entrySet ())
{
str.append (entry.getKey());
str.append (" = ");
str.append (entry.getValue()) ;
}
return str.toString() ;
}
両方のバージョンを逆コンパイルして、コンパイラがそれらを使って何をしたかを見てください。 – Tom
2番目のスニペットは最初のスニペットより少ないStringオブジェクトを生成する可能性が高いので、私はそれを好むでしょう。 – Eran
@Tom合意したように、文字列を連結する必要があり、 'StringBuilder'は同じ数の' char'をループしなければならないので、オプション番号2は "より良い"ということです。したがって、オプション1はオプション2と同じように見えますが、余分な不必要な連結があります – Maljam