• 每天进步一点点 --- Guava


    一、Guava是什么

    Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库。这个库是为了方便编码,并减少编码错误。这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法。

    直白一些就是:Guava是谷歌的很多项目正在使用的一个工具库,可以避免很多的编码错误,支持集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证等的方法。

    二、Guava对于字符串的便利操作

    1、List可Iterable的字符串数组拼接和写文件  --   Joiner

    (1)Joiner指定间隔符拼接字符串,对于Null字符会抛出异常,可以跳过或者替换

    1. private final List stringList = Arrays.asList("Google", "Guava", "Java");
    2. private final List stringListWithNullValue = Arrays.asList("Google", null);
    3. String result = Joiner.on("#").join(stringList);
    4. System.out.println(Joiner.on("#").skipNulls().join(stringListWithNullValue));
    5. System.out.println(Joiner.on("#").useForNull("DEFAULT").join(stringListWithNullValue));
    6. Map testMap = new HashMap<>();
    7. testMap.put("hello", "world");
    8. testMap.put("java", "javaScript");
    9. System.out.println(Joiner.on("#").withKeyValueSeparator("=").join(testMap)); //java=javaScript#hello=world

    上面这些JAVA8也可以做到,Appender是个神奇:

    1. StringBuilder builder = Joiner.on("#").useForNull("DEFAULT").appendTo(stringBuilder, stringListWithNullValue);
    2. 可以直接append到文件
    3. File file = new File("hsf.txt");
    4. try (FileWriter fileWriter = new FileWriter(file)) {
    5. Joiner.on("#").appendTo(fileWriter, stringList);
    6. } catch (Exception e) {
    7. fail();
    8. }

    Java8写文件的形式如下:

    1. try (BufferedWriter writer =
    2. Files.newBufferedWriter(path,
    3. StandardCharsets.UTF_8,
    4. StandardOpenOption.APPEND)){
    5. writer.write("Hello World -字母哥!!");
    6. }

    2、String的spliter

    拆分字符串的基本操作,omitEmptStrings是忽略null,如果是空格还是会占用的,trimResults是直接去掉拆分后的前后的空白

    fixedLength是固定长度分隔,on是按照分隔串分隔,谁在后面谁生效
    
    1. List result = Splitter.on("|").splitToList("Helllo|world"); // Hello world
    2. List result1 = Splitter.on("|").omitEmptyStrings().splitToList("Helll|| o|world"); // [Helll, o, world]
    3. List result2 = Splitter.on("|").omitEmptyStrings().splitToList("Helll| | o|world"); // [Helll, , o, world]
    4. List result3 = Splitter.on("|").omitEmptyStrings().trimResults().splitToList("Helll| | o|world"); // [Helll, o, world]
    5. List result4 = Splitter.on("|").omitEmptyStrings().trimResults().limit(2).splitToList("hello|world|zhangfei"); //[hello, world|zhangfei]
    6. List result5 = Splitter.on("|").omitEmptyStrings().trimResults().trimResults(CharMatcher.is('h')).splitToList("hello|world|zhangfei"); //[ello, world|zhangfei]
    7. List result6 = Splitter.fixedLength(2).omitEmptyStrings().trimResults().splitToList("hello|world|zhangfei"); //[he, ll, o|, wo, rl, d|, zh, an, gf, ei]

    转换成Map或者流或者正则分隔

    1. List result8 = Splitter.on(Pattern.compile("\\|")).omitEmptyStrings().trimResults().splitToList("hello|world|zhangfei"); //[hello, world, zhangfei]
    2. List result9 = Splitter.onPattern("\\|").omitEmptyStrings().trimResults().splitToList("hello|world|zhangfei"); //[hello, world, zhangfei]
    3. Map result10 = Splitter.onPattern("\\|").omitEmptyStrings().trimResults().withKeyValueSeparator("=").split("hello=1|world=2|zhangfei=3"); //{hello=1, world=2, zhangfei=3}

    2、Guava的断言 Preconditions

    暂时不使用,代码中不喜欢使用断言

    3、Guava的断言Strings和CharSet

    Strings的公共前缀、后缀,重复和前后填充还是比较有用的。CharSets主要用于枚举, CharMatcher还有一些东西,但是其它工具也可以使用,没有啥推荐的。

    1. Strings.emptyToNull("");
    2. Strings.commonPrefix("hello", "hell");
    3. Strings.commonSuffix("hello", "hoho");
    4. Strings.isNullOrEmpty("");
    5. Strings.repeat("he", 3);
    6. Strings.padStart("Alex", 5, 'H'); // 当字符串不够长度时,在前面填充H
    7. Strings.padEnd("Alex", 5, 'H');
    8. Charsets.UTF_8

  • 相关阅读:
    我的创作纪念日
    Python入门学习15(面向对象)
    【SparkStreaming】DS输出、优雅的关闭、案例实操之需求一的实现
    [C进阶] 数据在内存中的存储——浮点型篇
    Unity注解使用方法快速上手
    服务安全-应用协议rsync未授权&ssh漏洞复现
    C++使用cmake创建项目
    AppLink上的小鹅通能实现什么操作呢?
    探索无限自然之美——Terragen Professional 4渲染软件
    File、Blob、FileReader、ArrayBuffer、Base64
  • 原文地址:https://blog.csdn.net/qq_45759288/article/details/126696167