2013/09/25

CharArrayWriter vs StringBuilder

古いソースだと思うが
   CharArrayWriter caw = new CharArrayWriter();
   PrintWriter pw = new PrintWriter(caw);
   pw.append("hoge").append("hage");
   ...
   caw.toString();
というコードを見てしまった。やってることは文字列をどんどん連結しているだけなのだが、その目的の場合、ちょっとしたテストコードなら +(プラス演算子)で連結、ちゃんとしたコードならStringBuilderを使うのが定石だろう。Javaで文字列を連結するときプラス演算子はパフォーマンスに問題がある。そこでスレッドセーフでなくていいならStringBuilderを(文字列連結は大抵ローカルで行うのでこれで良い)、スレッドセーフが必要ならStringBufferを使う。
cawという牛のような変数名を見て若干おののいたが、CharArrayWriterも名前の通りそれと同様のことをやっているようだ。
では何でStringBuilderではなく見慣れないCharArrayWriterを使ったのか。

( ゚д ゚)分かりませんでした。

ちょっと検索しても違いがイマイチ分かんないし、こんなとき自信を持ってStringBuilderに置き換えても問題無いですと言い切れないのが経験の浅さでしょうか・・

CharArrayWriterは知らなくても困んなかったしStringBuilderだけ覚えておけばいいと思う。また、似たようなのでは万能なByteArrayOutputStream + OutputStreamWriterを覚えておくと便利。

0 件のコメント:

コメントを投稿