Guava学习笔记-Joiner

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

4、延伸

参考链接

Joiner

猜你喜欢

转载自blog.csdn.net/nalw2012/article/details/105213516