基本的な使い方
Joinerクラスは文字列のリストを連結するのに使います。
今まで文字列リストの連結を
for文でまわしていた人には重宝するでしょう。
例えば以下のリストがあるとします。
List<String> strList = new ArrayList<String>();
strList.add("tokyo");
strList.add("minatoku");
strList.add("roppongi");
strList.add("1-1-1");
これを「,」で区切って連結するサンプルコードを書いてみました。
StringBuilder sb = new StringBuilder();
for (String str : strList) {
if (sb.length() != 0) {
sb.append(",");
}
sb.append(str);
}
System.out.println(sb.toString());
出力結果は以下です。
tokyo,minatoku,roppongi,1-1-1
これをGuavaで記述すると以下になります。
String result = Joiner.on(',').join(strList);
System.out.println(result);
出力結果は…
tokyo,minatoku,roppongi,1-1-1
になります。
文字列の連結をする機会が頻出するかは判りませんが、複数行のコードが1行になりました。
使い方は以下になります。
Joiner.(区切り文字).(連結するリスト)
nullの扱い1
文字列にnullがあった場合は連結をスキップしたい場合は以下のようにskipNulls()を追加で書きます。
Joiner.on(',').skipNulls().join(strList);
以下のようなリストがあったとします。
List<String> strList = new ArrayList<String>();
strList.add("apple");
strList.add("orange");
strList.add(null);
strList.add("melon");
Joiner.on(',').skipNulls().join(strList); の結果は以下になります。
apple,orange,melon
for文でまわす場合はnullチェックをしなければいけないところが、これまた1行で済みました。
nullの扱い2
nullがあった場合空文字にしたり、nullだった事を示す特殊文字を入れたい時は以下の様に.useForNull(文字列)を追加します。
以下のリスト
List<String> strList = new ArrayList<String>();
strList.add("apple");
strList.add("orange");
strList.add(null);
strList.add("melon");
上記で、nullの時に「none」で置き換えて出力させたい時は以下の通りに記述します。
Joiner.on(',').useForNull("none").join(strList);
出力結果は以下です。
apple,orange,none,melon
以下のようなリストでもtoStringして連結してくれます。
List<Object> strList = new ArrayList<Object>();
strList.add("apple");
strList.add(1);
strList.add(1L);
strList.add(1.23f);
strList.add("melon");
String result = Joiner.on(',').join(strList);
結果は以下です。
apple,1,1,1.23,melon
単純に文字の連結するだけであればかなり強力なクラスだと思います。
Joinerにはまだ紹介していないメソッドがありますが、今回はとりあえずここまでとしたいと思います。
最終更新:2014年01月06日 22:31