每天进步一点点 --- Guava

一、Guava是什么

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

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

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

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

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

    private final List<String> stringList = Arrays.asList("Google", "Guava", "Java");

    private final List<String> stringListWithNullValue = Arrays.asList("Google", null);

    String result = Joiner.on("#").join(stringList);

    System.out.println(Joiner.on("#").skipNulls().join(stringListWithNullValue));

    System.out.println(Joiner.on("#").useForNull("DEFAULT").join(stringListWithNullValue));

        Map<String, String> testMap = new HashMap<>();
        testMap.put("hello", "world");
        testMap.put("java", "javaScript");
        System.out.println(Joiner.on("#").withKeyValueSeparator("=").join(testMap)); //java=javaScript#hello=world

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

StringBuilder builder = Joiner.on("#").useForNull("DEFAULT").appendTo(stringBuilder, stringListWithNullValue);

可以直接append到文件
        File file = new File("hsf.txt");
        try (FileWriter fileWriter = new FileWriter(file)) {
            Joiner.on("#").appendTo(fileWriter, stringList);
        } catch (Exception e) {
            fail();
        }

Java8写文件的形式如下:

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

2、String的spliter

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

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

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

        List<String> result8 = Splitter.on(Pattern.compile("\\|")).omitEmptyStrings().trimResults().splitToList("hello|world|zhangfei"); //[hello, world, zhangfei]
        List<String> result9 = Splitter.onPattern("\\|").omitEmptyStrings().trimResults().splitToList("hello|world|zhangfei"); //[hello, world, zhangfei]
        Map<String,String> 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还有一些东西,但是其它工具也可以使用,没有啥推荐的。

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

Charsets.UTF_8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值