用瓜娃之前, 每當遇到把一串東西用逗號分割打印出來的需求, 俺都有點煩. 這算是挺簡單無聊的活, 可是每次寫起來那代碼老是以爲象56k貓撥號上網那麼讓人磨牙:
StringBuilder builder = new StringBuilder();
int first = true;
for (String s : strings) {
if (first) {
first = false;
} else {
builder.append(',');
}
builder.append(s);
}
String result = builder.build();
瓜娃的
Joiner用起來就順手順氣多了. 很少廢話, 看代碼:
String joined = Joiner.on(',').join(strings);
要是須要對null作特殊處理, 好比打印"NA":
String joined = Joiner.on(',').useForNull("NA").join(strings);
或者乾脆把null濾掉:
String joined = Joiner.on(',').skipNulls().join(strings);
還有一些其它的定製功能, 本身看javadoc吧.
若是你全部的不是一個對象數組或者Iterable, 而是一個int[], Joiner不提供直接支持. 可是瓜娃有另一個至關有用的包:
com.google.common.primitives. 這裏用到的是一個int數組, 因此我們來看看Ints是否有啥能使的. 哈, 找到拉! (廢話, 固然拉, 你事先就知道的嘛!)
String joined = Ints.join(",", intArray);
總之記住一句話, 當你跟原始類型打交道的時候, 看看primitives包裏有沒有你合適用的鏟子, 鐵鍬什麼的.
呵呵, 注意呀, 這裏要扣題了(不然高考是要被扣分地), 所謂天下大勢, 合久必分, 分久必合. 有Joiner, 就有Splitter.
要說JDK的String類已經有了split(), 可是 這個函數的設計有點那個, 嗯, 有個性. 你要是常常用它就會發現它常常會給你一些驚喜, 嗯, 東坡居士說: 敗亦喜, 因此, 這裏就是"失敗"的意思, 是你會被String.split()華麗地戰勝的意思.
固然, 咱們還能夠用JDK的StringTokenizer, 若是你想炫耀你用java正確寫老式循環不出錯的技巧的話.
瓜娃的Splitter可讓咱們用java 5的enhanced for loop, 並且通常你看着一個它像是作什麼的, 它就是作的那個.
好比:
for (String word : Splitter.on(',').split("ajoo,so,handsome!")) {
System.out.println(word);
}
// 打印出 ajoo so handsome!
對了, Splitter還支持正則表達式. 未完待續