Joiner
文章目录
1、背景
需要连接字符串集合中的所有元素,形成一个长字符串。
2、说明
依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.2-jre</version>
</dependency>
3、示例
3.1 普通连接
private final List<String> stringList = Arrays.asList(
"Google", "Guava", "Java", "Test", "Kafka"
);
private final List<String> stringListWithNull = Arrays.asList(
"Google", "Guava", "Java", "Test", null, "Kafka"
);
@Test
public void test1() {
String result = Joiner.on("-").join(stringList);
System.out.println(result);
}
输出
Google-Guava-Java-Test-Kafka
3.2 跳过空元素
String result = Joiner.on("-").skipNulls().join(stringListWithNull);
说明:若连接的集合包含空元素,而Joiner未指定跳过空元素,则执行会抛出异常
3.3 默认值替换空元素
String result = Joiner.on("-").useForNull("Default").join(stringListWithNull);
System.out.println(result);
输出:
Google-Guava-Java-Test-Default-Kafka
3.4 结果放入stringbuilder
StringBuilder builder = new StringBuilder("src-");
StringBuilder result = Joiner.on("-").useForNull("Default").appendTo(builder, stringListWithNull);
System.out.println(builder);
System.out.println(result);
输出:
src-Google-Guava-Java-Test-Default-Kafka
src-Google-Guava-Java-Test-Default-Kafka
3.5 写入文件
try {
FileWriter fileWriter = new FileWriter(new File("./joiner.txt"));
Joiner.on("-").useForNull("Default").appendTo(fileWriter, stringListWithNull);
fileWriter.flush();
} catch (IOException e) {
e.printStackTrace();
}
3.6 使用stream
String result = stringListWithNull.stream().filter(item -> item != null && !item.isEmpty())
.collect(Collectors.joining("-"));
3.7 使用stream并替换默认值
String result = stringListWithNull.stream().filter(item -> item != null && !item.isEmpty())
.collect(Collectors.joining("-"));
3.8 连接map
Map<String, String> stringMap = of("Google", "Guava", "Java", "Kafka");
String result = Joiner.on(",").withKeyValueSeparator("-").join(stringMap);
System.out.println(result);
输出:
Google-Guava,Java-Kafka
3.9 连接map输出到stringbuilder
Map<String, String> stringMap = of("Google", "Guava", "Java", "Kafka");
StringBuilder builder = new StringBuilder("src:");
Joiner.on(",").withKeyValueSeparator("-").appendTo(builder,stringMap);
System.out.println(builder);
输出
src:Google-Guava,Java-Kafka