public static String concatString(List<String> lists,String delimiter){ StringBuilder builder = new StringBuilder(); for(String s : lists){ if(s!=null){ builder.append(s).append(delimiter); } } builder.setLength(builder.length()-delimiter.length()); return builder.toString(); }
这段代码没什么好说的,比较简单。但是这只是针对list集合,可能还会针对数组等其他数据结构的字符串拼接。自己实现还是有些麻烦。为此guava为我们提供了一个joiner类来负责拼接。
例如上面的代码可以改写为:
Joiner.on("|").join(lists);
一句代码即解决。
此外joiner还提供了两个方法分别是过滤null和将null替换为某个字符串。
Joiner.on("|").useForNull(" 没有").join(lists); Joiner.on("|").skipNulls().join(lists);
MapJoiner的用法和Joiner类似,不过MapJoiner主要针对map的字符串拼接例:
Map<String,String> maps = Maps.newHashMap(); maps.put("id", "1"); maps.put("name", "2"); String ss= Joiner.on("&").withKeyValueSeparator("=").join(maps);