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"));
}
}
Guava入门第一章(Joiner)的更多相关文章
- MySQL----MySQL数据库入门----第一章 数据库入门
第一章 数据库入门 1.1 数据库基础知识 1.1.1 数据库概述 数据不仅包括普通意义上的数字,还包括文字.图像.声音等.也就是说,凡是在计算机中用来描述事物的记录都可称作数据. 数据库的基本特点: ...
- JAVA 入门第一章(语法基础)
本人初学java 博客分享记录一下自己的学习历程 java我的初步学习分为六章,有c和c++的基础学起来也简便了很多. 第一章 语法基础 第二章 面向对象 第三章 常用工具类 第四章 文件操纵 第五章 ...
- 关于阮大神的es6标准入门第一章
题记:之前在10月份的时候写过阮大神的es6的第一章,但是由于那段时间项目组的动荡,所以也没有什么后续,导致我现在对es6基本都忘的差不多了,不过,现在换了新公司,最近也没什么任务,所以现在开始重新写 ...
- C基础入门 - 第一章 - C语言绪言
第1章 C语言绪言 1.1 C语言概述 1.1.1 C语言世界 1.1.2 C语言学习, 能当饭吃吗 1.2 开发环境构建 1.2.1 visual studio安装使用 1.2.2 visual s ...
- Java入门第一章
后天就是十一长假了,亲们准备好了去哪儿玩了吗? 今天有点空,就来聊聊Java吧,当然是一些Java入门知识了,网上有很多,这里我只是列举一些我自己学到的,感谢大家关注喵的博客这么久,也为大家带来点新知 ...
- RabbitMQ 消息队列 入门 第一章
RabbitMQ : 官网:https://www.rabbitmq.com/ GitHub:https://github.com/rabbitmq?q=rabbitmq 第一步安装: 点击 htt ...
- Java入门第一章知识点总结
-d是directory 目录的意思 cls:清楚doc里面的内容 ipconfig:显示网络配置信息 java -version:检查安装的jdk版本信息 是类型自动向上转换. 在输出时,根据当前 ...
- Linux基础入门 第一章:Linux环境搭建——Redhat 6.4图文安装教程
1.创建新的虚拟机 2.选择自定义 3.选择Workstation 10.0 4.选择稍后安装操作系统 5.选择Red Hat 6 64位 6.对虚拟机命名和选择安装位置 7.选择处理器配置 8.选择 ...
- mvc5+ET6入门第一章
这一篇主要讲的是MVC也就是Model--View--Controller的缩写,没有讲ET.其中 Model(模型)表示应用程序核心(比如数据库记录列表).通常模型对象在数据库中存取数据. View ...
随机推荐
- CRM系统对企业管理的作用有多大?
随着市场经济的发展,对任何行业的企业来说,客户都是非常重要的一个部分.CRM系统帮助企业做到以客户为中心,它可以根据客户的具体要求进行跟进和反馈,在很大程度上提高公司的客户服务水平和客户满意度,进而提 ...
- hive学习笔记之十一:UDTF
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- redis-list实现
Redis 数据结构---链表 Redis的list底层实现使用的不是数组而是链表的数据结构 叫listnode 是一个双向链表 ListNode{ Struct listNode *prev / ...
- 资源:Kafka消息队列下载路径
Kafka下载路径 http://kafka.apache.org/downloads.html
- 知识全聚集 .Net Core 技术突破 丨ABP vNext 开始
介绍 很久没有更新博客了,之前想更新但是发现博客园崩了,外加工作上的调换也比较忙,最近有了点时间我来继续更新下这个系列的文章. 今年3月份我带着我们研发组同事,将公司产品从老Abp重构到Abp vNe ...
- vscode搭建python环境
这两天刚下了一个pycharm,结果使用之后将vscode给崩了,重装的时候有些步骤也记不清,走了一些弯路,做个总结来记录一下(本人觉得vscode比pycharm好用一点). Python下载安装 ...
- robotframework - database操作(增删改查)
1.前置配置条件准备 a.mysql环境配置ok b.robot环境配置ok c.pip 安装robotframework-databaselibrary 2.mysql数据操作 -->以操作 ...
- Unittest方法 -- 测试报告&加载测试类(discover)
import unittestimport HTMLTestRunnerimport osclass F11(unittest.TestCase): def test_001(self): self. ...
- springMVC-8-jackson使用
springMVC默认的 Json 解决方案是 Jackson, 所以只需要导入 Jackson 的 jar, 即可使用 <!--Jackson--> <dependency> ...
- 【动画消消乐】HTML+CSS 自定义加载动画:怦然心跳 066
前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...