Guava--Joiner使用方式以及java8实现Joiner

时间:2025-02-21 07:42:19
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")); } }