guava Joiner 常用
// 用特定字符连接列表元素。如果元素有null,则会直接退出,不会执行后续的代码
final List<String> stringList = Arrays.asList("Google", "Guava", "Java", "Scala", "Kafka");
String result = Joiner.on("#").join(stringList);
System.out.println(result); // Google#Guava#Java#Scala#Kafka
// skipNulls 跳过null元素
final List<String> stringListWithNullValue = Arrays.asList("Google", "Guava", "Java", "Scala", null);
String result = Joiner.on("#").skipNulls().join(stringListWithNullValue);
System.out.println(result); // Google#Guava#Java#Scala
// useForNull 元素为null时,设置默认值
final List<String> stringListWithNullValue = Arrays.asList("Google", "Guava", "Java", "Scala", null);
String result = Joiner.on("#").useForNull("DEFAULT").join(stringListWithNullValue);
System.out.println(result); // Google#Guava#Java#Scala#DEFAULT
// appendTo 内容追加到一个StringBuilder中,返回值对象将指向追加的StringBuilder对象
final List<String> stringListWithNullValue = Arrays.asList("Google", "Guava", "Java", "Scala", null);
final StringBuilder builder = new StringBuilder();
StringBuilder resultBuilder = Joiner.on("#").useForNull("DEFAULT").appendTo(builder, stringListWithNullValue);
resultBuilder.append("#GO");
System.out.println(builder == resultBuilder); // 返回true,返回的resultBuilder也将指向追加的builder
System.out.println(builder); // Google#Guava#Java#Scala#DEFAULT#GO
System.out.println(resultBuilder); // Google#Guava#Java#Scala#DEFAULT#GO
// appendTo将内容输出到指定的盘符目录
final List<String> stringListWithNullValue = Arrays.asList("Google", "Guava", "Java", "Scala", null);
final String targetFileName = "D:\\resources\\guava-joiner.txt";
try (FileWriter writer = new FileWriter(new File(targetFileName))) {
Joiner.on("#").useForNull("DEFAULT").appendTo(writer, stringListWithNullValue);
} catch (IOException e) {
fail("append to the writer occur fetal error.");
}
// joining 可以用于Stream的collect中,用于按照指定的字符拼接
final List<String> stringListWithNullValue = Arrays.asList("Google", "Guava", "Java", "Scala", null);
String result = stringListWithNullValue.stream().filter(e -> {return null != e;}).collect(joining("#"));
System.out.println(result); // Google#Guava#Java#Scala
// withKeyValueSeparator 用于指定map的key、value之间用什么分隔。
Map<String, String> stringMap = new HashMap<>();
stringMap.put("id", "1001");
stringMap.put("name","张三");
stringMap.put("age","23");
final String join = Joiner.on('#').withKeyValueSeparator("=").join(stringMap);
System.out.println(join); // name=张三#id=1001#age=23