Guava--Joiner使用方式以及java8实现Joiner
public class JoinerTest {
private List<String> arr = Arrays.asList("Google", "Java", "RabbitMq");
private List<String> arrHaveNullValue = Arrays.asList("Google", "Java", "RabbitMq", null);
/**
* 1. 可以使用join连接(数组)和(集合), 设置分隔符.
* 2. 返回拼接之后的一个字符串.<result>
*/
@Test
public void testJoin() {
String result = Joiner.on("#").join(arr);
assertThat(result, equalTo("Google#Java#RabbitMq"));
}
/**
* 1. 可以使用join连接(数组)和(集合), 设置分隔符.
* 2. 若(数组)和(集合)中含有null, 会抛出NullPointerException.
* 3. 返回拼接之后的一个字符串.<result>
*/
@Test(expected = NullPointerException.class)
public void testJoinHaveNullValue() {
String result = Joiner.on("#").join(arrHaveNullValue);
assertThat(result, equalTo("Google#Java#RabbitMq"));
}
/**
* 1. 可以使用join连接(数组)和(集合), 设置分隔符.
* 2. 若(数组)和(集合)中含有null, 会抛出NullPointerException.
* 3. 可以使用skipNulls(), 去除null.
* 4. 返回拼接之后的一个字符串.<result>
*/
@Test
public void test_Joiner_Skip_NullValue() {
String result = Joiner.on("#").skipNulls().join(arrHaveNullValue);
assertThat(result, equalTo("Google#Java#RabbitMq"));
}
/**
* 1. 可以使用join连接(数组)和(集合), 设置分隔符.
* 2. 若(数组)和(集合)中含有null, 会抛出NullPointerException.
* 3. 可以使用useForNull(), 去替换null.
* 4. 返回拼接之后的一个字符串.<result>
*/
@Test
public void test_Joiner_UseDefaultValue_NullValue() {
String result = Joiner.on("#").useForNull("DEFAULT").join(arrHaveNullValue);
assertThat(result, equalTo("Google#Java#RabbitMq#DEFAULT"));
}
/**
* 1. 可以使用join连接(数组)和(集合), 设置分隔符.
* 2. 若(数组)和(集合)中含有null, 会抛出NullPointerException.
* 3. 可以使用skipNulls(), 去除null.
* 4. 把(数组)和(集合)结果放入到StringBuilder or StringBuffer中.<result>
*/
@Test
public void test_Joiner_Append_StringBuilder() {
StringBuilder builder = new StringBuilder();
StringBuilder resultBuilder = Joiner.on("#").skipNulls().appendTo(builder, arrHaveNullValue);
assertThat(resultBuilder, sameInstance(builder));
assertThat(resultBuilder.toString(), equalTo("Google#Java#RabbitMq"));
assertThat(builder.toString(), equalTo("Google#Java#RabbitMq"));
}
/**
* 1. 可以使用join连接(数组)和(集合), 设置分隔符.
* 2. 若(数组)和(集合)中含有null, 会抛出NullPointerException.
* 3. 可以使用skipNulls(), 去除null.
* 4. 把(数组)和(集合)结果放入到FileWriter中.<result>
*/
@Test
public void test_Joiner_Append_Writer() {
String targetFileName = "D:\\usr\\";
try (FileWriter writer = new FileWriter(new File(targetFileName))) {
Joiner.on("#").skipNulls().appendTo(writer, arr);
} catch (IOException e) {
fail("Joiner append to file is error!");
}
}
/**
* 1. 使用java8Stream达到和Join一样的功能.
*/
@Test
public void test_Java8_skip_NullValue() {
String result = arrHaveNullValue.stream()
.filter(item -> item != null && !item.isEmpty())
.collect(joining("#"));
assertThat(result, equalTo("Google#Java#RabbitMq"));
}
@Test
public void test_Java8_UseDefaultValue_NullValue() {
String result = arrHaveNullValue.stream()
.map(item -> item == null || item.isEmpty() ? "DEFAULT" : item)
.collect(joining("#"));
assertThat(result, equalTo("Google#Java#RabbitMq#DEFAULT"));
}
}