著作一覧 |
今、文字列の配列 array = { "a", "b", "c" ... "z" }があって、ここから、"a, b, c, ..., y, z"というカンマ区切りの文字列を作るとする。
C#なら、何も考えなくとも、string.Join(", ", array);で出来てしまうが、Javaには今のところそういうメソッドはStringにもArraysにもない。この2つになければきっとないだろうと思う。
C#だって、zipしながらじゃできないのではなかろうか。と思ってSystem.Arrayクラスを眺めていたらAsReadOnly
で、最近はString#+が賢くなったので、StringBufferとかStringBuilderとかをあまり使わないような気がするのだが、カンマ結合のときは、非常に便利なので良く使う。
というのは、
String[] a = new String[] { "a", "b", .... }; String cvs = ""; for (String s : a) { if (cvs.length() != 0) { cvs += ", "; } cvs += s; }
みたいな、どうでも良いループの中で、たった1回切りしか意味がない条件節を入れるのが不快だからだ。無駄なことこのうえない。
それに対してStringBuilderみたいなものを使えば、安価に記述できる。
String[] a = new String[] { "a", "b", .... }; StringBuilder cvs = new StringBuilder(); for (String s : a) { cvs.append(s).append(", "); } cvs.setLength(cvs.length() - 2); // もちろん最低でも1要素は存在する前提。0要素があるなら、ここでcvs.length > 0 すれば良い(ループの外に条件節を入れるのは不快ではない)
でも、最近、別解もあるなぁと、少なくともSQLを文字列組立しているときは思う(が、上のように書くので通常は使わない)。
String[] a = new String[] { "a", "b", .... }; StringBuilder sql = new StringBuilder("select "); for (String s : a) { sql.append(s).append(", "); } sql.append(" 0 as DUMMY from ").append(TABLE_NAME);
カンマが余分なら、要素を追加してやれば良いのであった。
ジェズイットを見習え |