Guava入门第一章(Joiner)
Guava是什么?
Guava是一种基于开源的Java库,Google Guava源于2007年的”Google Collections Library”。这个库是为了方便编码,并减少编码错误。这个库用于提供集合,缓存,支持原语句,并发性,常见注解,字符串处理,I/O和验证的实用方法。
Guava的好处
- 标准化 – Guava库是由谷歌托管。
- 高效 – 可靠,快速和有效的扩展JAVA标准库
- 优化 -Guava库经过高度的优化。
函数式编程:增加Java功能和处理能力
实用程序:提供经常需要在应用程序中开发的许多实用程序类
验证:提供标准的故障安全验证机制。
最佳实践:强调最佳的做法。
总之,它是一个提高代码质量、简化工作,促使代码更有弹性、更加简洁的工具。
Guava依赖+Junit依赖
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>23.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope> </dependency>
Joiner详细介绍
package com.lvshihao.guava; import com.google.common.base.Joiner; import com.google.common.io.Files; import org.junit.Test; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import static org.hamcrest.core.IsEqual.equalTo; import static org.hamcrest.core.IsSame.sameInstance; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; /** *@author: LVSHIHAO *@description: GUAVA Joiner detailed introduction */ public class JoinerTest { private final List<String> stringList= Arrays.asList("Java","Scala","Kafaka","Guava","Google"); private final List<String> stringListWithNullValue=Arrays.asList("Java","Scala","Kafaka","Guava",null); private final String targetFileName="D:\\IDEA_PROJECT\\test\\src\\test\\java\\files\\guava-joiner.txt"; private final Map<String,String> stringMap=new LinkedHashMap<>(); { stringMap.put("hello","lvshihao"); stringMap.put("my","lvbu"); } @Test public void testJoinOnJoin(){ /** * on()是连接的字符 is connect character * join()是连接的方法 is connect method */ //此时运行没有问题但是如果出现有NULL的值就会连接失败出现空指针异常 String result1= Joiner.on("#").join(stringList); assertThat(result1,equalTo("Java#Scala#Kafaka#Guava#Goole")); } @Test public void testJoinOnJoinWithNullValueButSkip(){ /** * skipNulls()不拼接为NULL的元素 not append by null element */ //此时运行就没有问题,因为skipNulls()帮我们跳过NULL的元素 String result2= Joiner.on("#").skipNulls().join(stringListWithNullValue); assertThat(result2,equalTo("Java#Scala#Kafaka#Guava")); } @Test public void testJoinOnJoinWithNullValueButUseDefaultValue(){ /** * useForNull()使用默认值代替NULL元素 use default replace null element */ //此时运行就没有问题,因为useForNull()使用default帮我们代替NULL元素 String result2= Joiner.on("#").useForNull("default").join(stringListWithNullValue); assertThat(result2,equalTo("Java#Scala#Kafaka#Guava#DEFALUT")); } @Test public void testJoinOnAppendToStringBuilder(){ /** * appendTo()使用传入的可变字符串对象进行拼接 use afferent variable character string object conduct append */ final StringBuilder builder=new StringBuilder(); StringBuilder resultBuilder = Joiner.on("#").useForNull("default").appendTo(builder, stringListWithNullValue); assertThat(resultBuilder,sameInstance(builder)); assertThat(resultBuilder.toString(),equalTo("Java#Scala#Kafaka#Guava#DEFALUT")); assertThat(builder.toString(),equalTo("Java#Scala#Kafaka#Guava#DEFALUT")); } @Test public void testJoinOnAppendToWriter(){ try (FileWriter fileWriter=new FileWriter(new File(targetFileName));){ Joiner.on("#").useForNull("default").appendTo(fileWriter, stringListWithNullValue); assertThat(Files.isFile().test(new File(targetFileName)),equalTo(true)); } catch (IOException e) { fail("append to the writer occur fetal error"); } } @Test public void testJoinOnWithMap(){ assertThat(Joiner.on("#").withKeyValueSeparator("=").join(stringMap),equalTo("hello=lvshihao#my=lvbu")); } }