首发csdn,osc延后更新
java
在字符串处理操做中,很是经常使用的一个功能是将一个字符串数组或者字符串集合使用某种分隔符拼接为单一的字符串(须要注意拼接操做每每是不可逆的)。除了丑陋的本身写以外,经常使用的方式还有下面几种:apache
1. Java8的String.join数组
2. Guava的Joineride
3. Apache commons-lang3的StringUtilsgoogle
这3者都能实现最基本的功能,可是在细节上仍是有不少不一样,使用时值得注意选择。简要提及来主要区别以下:spa
1. Java8的String.join实现最简单,可是它会将null输出为"null"code
2. Guava的Joiner提供的连贯接口,若是不指定如何处理null则遇到null时会抛出NPE,能够指定跳过null,也能够指定将null转换为什么种字符串orm
3. Apache commons-lang3的StringUtils提供的方法直接将null转换为空字符串,对于数组输入能够指定只拼接其中一部分blog
下面是代码和对应的输出接口
package blog.java; import java.util.Arrays; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import com.google.common.base.Joiner; public class S14 { @DataProvider public Object[][] list() { String[] array = { "a", "b", null, "c", "", "d" }; List<String> list = Arrays.asList(array); return new Object[][] { new Object[] { array, list } }; } @Test(dataProvider = "list") public void testJava8Join(String[] array, List<String> list) { // "a, b, null, c, , d" System.out.println(String.join(", ", array)); // "a, b, null, c, , d" System.out.println(String.join(", ", list)); } @Test(dataProvider = "list") public void testLang3StringUtils(String[] array, List<String> list) { // "a, b, , c, , d" System.out.println(StringUtils.join(array, ", ")); // "a, b, , c, , d" System.out.println(StringUtils.join(list, ", ")); // "a, b, , c" System.out.println(StringUtils.join(array, ", ", 0, 4)); } @Test(dataProvider = "list") public void testGuavaJoiner(String[] array, List<String> list) { // java.lang.NullPointerException System.out.println(Joiner.on(", ").join(array)); // java.lang.NullPointerException System.out.println(Joiner.on(", ").join(list)); // "a, b, c, , d" System.out.println(Joiner.on(", ").skipNulls().join(array)); // "a, b, c, , d" System.out.println(Joiner.on(", ").skipNulls().join(list)); // "a, b, nullString, c, , d" System.out.println(Joiner.on(", ").useForNull("nullString").join(array)); // "a, b, nullString, c, , d" System.out.println(Joiner.on(", ").useForNull("nullString").join(list)); } }