对于Guava
的认识来自于阅读QMQ
源码的时候,有很多没有使用过的Java方法和集合,所以就查了查,发现是用的是Guava的类库,所以就有了下面的博客:
1. 字符串的拼接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| private final List<String> stringList = Arrays.asList("Google", "Guava", "Java", "Scala", "Kafka"); private final List<String> stringListWithNullValue = Arrays.asList("Google", "Guava", "Java", "Scala", null);
@Test public void Test() { String join = Joiner.on("*").join(stringList); System.out.println(join); assertEquals(join, "Google*Guava*Java*Scala*Kafka"); }
@Test(expected = NullPointerException.class) public void TestJoinValue() { String join = Joiner.on("*").join(stringListWithNullValue); System.out.println(join); assertEquals(join, "Google*Guava*Java*Scala*Kafka"); }
|
2. 跳过空数据
1 2 3 4 5 6 7
| @Test public void TestJoinSkipValue() { String join = Joiner.on("*").skipNulls().join(stringListWithNullValue); System.out.println(join); assertEquals(join, "Google*Guava*Java*Scala"); }
|
3. 为空的数据指定一个默认值
1 2 3 4 5 6 7
| @Test public void TestJoinDefalutValue() { String join = Joiner.on("*").useForNull("Defalut").join(stringListWithNullValue); System.out.println(join); assertEquals(join, "Google*Guava*Java*Scala*Defalut"); }
|
4. 追加到StringBuilder
1 2 3 4 5 6 7 8 9
| @Test public void TestJoinDefalutValueStringBuffer() { StringBuilder stringBuilder = new StringBuilder(); StringBuilder thatBuilder = Joiner.on("*").useForNull("Defalut").appendTo(stringBuilder, stringListWithNullValue); assertThat(thatBuilder, sameInstance(stringBuilder)); assertThat(stringBuilder.toString(), equalTo("Google*Guava*Java*Scala*Defalut")); assertThat(thatBuilder.toString(), equalTo("Google*Guava*Java*Scala*Defalut")); }
|
5. 追加到文件
1 2 3 4 5 6 7 8 9 10 11
| @Test public void TestJoinDefalutValueToWrite() {
try (FileWriter fileWriter = new FileWriter(new File("1.txt"))) { Joiner.on("#").useForNull("Default").appendTo(fileWriter, stringListWithNullValue); assert (Files.isFile().test(new File("1.txt"))); } catch (IOException e) { e.printStackTrace(); } }
|
6. 使用Java8实现相同的功能
1 2 3 4 5 6
| @Test public void TestJoinDefalutByStream() { String result = stringListWithNullValue.stream().map(x -> x == null || x.isEmpty() ? "Defalut" : x).collect(Collectors.joining("*")); assertThat(result, equalTo("Google*Guava*Java*Scala*Defalut")); }
|
7. 使用Guava对Map进行join
1 2 3 4 5 6 7 8 9
| @Test public void testJoinOnWithMap(){ Map<String,String> stringMap= ImmutableMap.of("Hello","Guava","Java","Scala"); String join = Joiner.on("#").withKeyValueSeparator("=").join(stringMap); System.out.println(join); assert join.equals("Hello=Guava#Java=Scala"); }
|