zoukankan      html  css  js  c++  java
  • 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"));
        }
    }

     

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

    作者:吕世昊

    个性签名:学习如逆水行舟,不进则退!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

  • 相关阅读:
    移植thinkPHP的dump()函数
    PHP生成linux命令行进度条
    没有ORM库的时候,通过PDO连接MySQL的方法
    mysql json字符串 解析成对应字段
    linux上安装并启动nginx
    linux上启动redis
    mui的input搜索框里的清除按钮的点击监听事件
    miniui 修改input样式及弹出框按钮文字
    js 删除数组元素的方法
    miniui反选
  • 原文地址:https://www.cnblogs.com/lvshihao/p/15156136.html
Copyright © 2011-2022 走看看