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 ...
随机推荐
- 教你写百分九十的shell
本文章主要内容来自菜鸟教程 , 也添加了一些知识点 shell脚本? 在说什么是shell脚本之前,先说说什么是shell.shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作 ...
- php 经典的算法题-偷苹果
有5个人偷了一堆苹果,准备在第二天分赃.晚上,有一人遛出来,把所有菜果分成5份,但是多了一个,顺手把这个扔给树上的猴了,自己先拿1/5藏了.没想到其他四人也都是这么想的,都如第一个人一样分成5份把多的 ...
- 输出 time 命令的结果到文件中
译至:http://unicus.jp/skmk/archives/338 由于输出 time 命令的结果到文件时使用的错误的方式,所以将其记录下来. 环境是bash. 目标 将运行的a.out程序的 ...
- Hadoop知识总结
------------恢复内容开始------------ Hadoop知识点 Hadoop知识点什么是HadoopHadoop和Spark差异Hadoop常见版本,有哪些特点,一般是如何进行选择H ...
- C语言:宏定义 本质及体现
- xmind8 Mac序列号
1.首先去官网下载xmind8的安装包:XMind for Mac 也可以去我的百度网盘下载: 链接:https://pan.baidu.com/s/1eY52YsSaPmr-YFhB62Cli ...
- Scala学习——面向对象
Scala面向对象 三大特征:封装.继承.多态 1.类的定义和使用 package top.ruandb.scala.Course02 object Simple { def main(args: A ...
- python -- 程序异常与调试(识别异常)
一.识别异常 程序中出现的错误又称为异常.异常通常分为两大类:编译错误和运行错误. 如下源码是已经修改: # -----------------------------------------# 编程 ...
- Dubbo的优雅下线原理分析
文/朱季谦 Dubbo如何实现优雅下线? 这个问题困扰了我一阵,既然有优雅下线这种说法,那么,是否有非优雅下线的说法呢? 这,还真有. 可以从linux进程关闭说起,其实,我们经常使用到杀进程的指令背 ...
- 秒懂 Java 的三种代理模式
前言 代理(Proxy)模式是一种结构型设计模式,提供了对目标对象另外的访问方式:即通过代理对象访问目标对象. 这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. ...