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)的更多相关文章

  1. MySQL----MySQL数据库入门----第一章 数据库入门

    第一章 数据库入门 1.1 数据库基础知识 1.1.1 数据库概述 数据不仅包括普通意义上的数字,还包括文字.图像.声音等.也就是说,凡是在计算机中用来描述事物的记录都可称作数据. 数据库的基本特点: ...

  2. JAVA 入门第一章(语法基础)

    本人初学java 博客分享记录一下自己的学习历程 java我的初步学习分为六章,有c和c++的基础学起来也简便了很多. 第一章 语法基础 第二章 面向对象 第三章 常用工具类 第四章 文件操纵 第五章 ...

  3. 关于阮大神的es6标准入门第一章

    题记:之前在10月份的时候写过阮大神的es6的第一章,但是由于那段时间项目组的动荡,所以也没有什么后续,导致我现在对es6基本都忘的差不多了,不过,现在换了新公司,最近也没什么任务,所以现在开始重新写 ...

  4. 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 ...

  5. Java入门第一章

    后天就是十一长假了,亲们准备好了去哪儿玩了吗? 今天有点空,就来聊聊Java吧,当然是一些Java入门知识了,网上有很多,这里我只是列举一些我自己学到的,感谢大家关注喵的博客这么久,也为大家带来点新知 ...

  6. RabbitMQ 消息队列 入门 第一章

    RabbitMQ : 官网:https://www.rabbitmq.com/ GitHub:https://github.com/rabbitmq?q=rabbitmq 第一步安装: 点击  htt ...

  7. Java入门第一章知识点总结

    -d是directory 目录的意思 cls:清楚doc里面的内容 ipconfig:显示网络配置信息 java -version:检查安装的jdk版本信息 是类型自动向上转换.  在输出时,根据当前 ...

  8. Linux基础入门 第一章:Linux环境搭建——Redhat 6.4图文安装教程

    1.创建新的虚拟机 2.选择自定义 3.选择Workstation 10.0 4.选择稍后安装操作系统 5.选择Red Hat 6 64位 6.对虚拟机命名和选择安装位置 7.选择处理器配置 8.选择 ...

  9. mvc5+ET6入门第一章

    这一篇主要讲的是MVC也就是Model--View--Controller的缩写,没有讲ET.其中 Model(模型)表示应用程序核心(比如数据库记录列表).通常模型对象在数据库中存取数据. View ...

随机推荐

  1. Linux平台安装MongoDB(转)

      一.下载完安装包,并解压 tgz(以下演示的是 64 位 Linux上的安装) . curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x ...

  2. CSS 奇思妙想 | 巧妙的实现带圆角的三角形

    之前在这篇文章中 -- <老生常谈之 CSS 实现三角形>,介绍了 6 种使用 CSS 实现三角形的方式. 但是其中漏掉了一个非常重要的场景,如何使用纯 CSS 实现带圆角的三角形呢?,像 ...

  3. C# 8.0和.NET Core 3.0高级编程 分享笔记一:C#8.0与NET Core 3.0入门

    在学习C#相关知识的过程中,我们使用Visual Studio Code来入门整个C#. 一.安装Visual Studio Core环境 通过https://code.visualstudio.co ...

  4. 315M、433M和2.4G笔记

    一.315M无线模块 315m无线模块广泛地运用在车辆监控.遥控.遥测.小型无线网络.无线抄表.门禁系统.小区传呼.工业数据采集系统.无线标签.身份识别.非接触RF智能卡.小型无线数据终端.安全防火系 ...

  5. Filter+Listener核心技术

    一.filter过滤器 javaweb三大组件:filter.listener.servlet. 过滤器是向web应用程序的请求和响应处理添加功能的web服务组件,可以在访问资源之前对请求和响应进行修 ...

  6. 如何修改Windows 11 任务栏大小

    1.首先Win+R输入regedit打开注册表编辑器         2.进入注册表编辑器后,在地址栏中输入: HKEY_CURRENT_USER\Software\Microsoft\ Window ...

  7. 团队开发day10

    项目整合成功,测试功能基本达到,目标完成!

  8. [刘阳Java]_Spring中IntrospectorCleanupListener的用途【补充】_第16讲

    这篇文章不是我自己原创的,但是为了后期的阅读,所以我收录网上的一篇文章.为了尊重作者的版权,转载地址先放上来,大家也可以去访问他的原始文章.http://jadyer.cn/2013/09/24/sp ...

  9. 【Uva1025 A Spy in the Metro】动态规划

    题目描述 某城市地铁是线性的,有n(2≤n≤50)个车站,从左到右编号1~n.有M1辆列车从第1站开始往右开,还有M2辆列车从第n站开始往左开.列车在相邻站台间所需的运行时间是固定的,因为所有列车的运 ...

  10. 【洛谷P1507 NASA的食物计划】动态规划

    分析 二维费用背包模板 AC代码 #include <bits/stdc++.h> using namespace std; const int Maxn=505; int a[Maxn] ...