• 基础工具GuavaLibraries学习笔记(一)


    什么是Guava-Libraries?

    Guava-Libraries是google对java的一个扩展,主要涵盖集合、缓存、并发、I/O、反射等等。

    它本来是Google内部所使用的一个类库,后来整理开源出来了。这套库的设计引入了很多新的理念,研究一下可能会使你对Java这门语言有新的认识和看法。

    地址:http://code.google.com/p/guava-libraries/

    这篇短文主要是关于Guava-Libraries基础工具,内容是我参考官方wiki和自己的使用体验结合而成。

    null的使用

    null在java中是一个很特殊的东西。它可以标识一个不确定的对象,比如

    Ojbect o = null

    同时在很多个集合中它代表key不存在,也可以代表值为null。

    null使用需要给外的小心,稍不注意就会出现很多问题。当然更多的时候只是单纯的觉得null不够优雅而已。

    Guava为我们提供了一个Optional的抽象类来解决这个问题。用类Present和Absent代表值存在和不存在。

    以下是一个例子:

    Optional possible = Optional.of(5);
    if (possible.isPresent()) {
       System.out.println(possible.get());
    }
    
    Optional absentValue = Optional. absent();
    if (absentValue.isPresent())
      System.out.println(absentValue.get());
    System.out.println(absentValue.or(-1));
    System.out.println(absentValue.orNull());
    System.out.println(absentValue.asSet());

    第一种是值存在的,第二种是值不存在的。执行效果如下:

    guava-1-1

    这里说明一下isPresent()方法是判断是否有值的。or方法是非null返回Optional的值,否则返回传入值。

    orNull()方法是非null返回Optional的值,否则返回null。

    我个人觉得or方法比较常用就是了。

    条件判断

    Guava还封装了一些条件检查方法,比如判断真假、判断是否为空、判断index是否合法等等。如果判断通过,返回值本身,否则抛出错误。

    每种方法又对应了三种重载:

    1.没有错误信息

    2.有直接的错误信息

    3.带模板的错误信息

    来个小例子:

    int i = Preconditions.checkNotNull(null);
    int i2 = Preconditions.checkNotNull(null, "错误");
    int i3 = Preconditions.checkNotNull(null, "错误:%s", "001");

    效果如下:

    guava-1-2

    guava-1-3

    guava-1-4

    对象的常用方法

    简单实现了Object的一些方法而已,比如toString、hashCode。

    我个人觉得equal这块用户不大,主要是toString和Compare。

    特别是ComparisonChain的使用,有种链式编程的感觉。

    例子:

    System.out.println("a equal a :" + Objects.equal("a", "a"));
    System.out.println("a equal b :" + Objects.equal("a", "b"));
    
    System.out.println("hascode : "
    		+ Objects.hashCode("one", "two", 3, 4.0));
    
    System.out.println("Blog toString : "
    		+ Objects.toStringHelper("Blog").add("name", "huang")
    				.add("url", "http://htynkn.cnblogs.com/").toString());
    
    System.out.println(ComparisonChain.start().compare(1.0, 1)
    		.compare("a", "a").compare(1.4411, 1.441).result());

    效果:

    guava-1-5

    写在最后

    Guava是google封装以后的东西,肯定经过了很多实践和测试。但是有些东西用着还是比较奇怪,感觉封装以后更混乱了。大家挑选着合适的用吧。

  • 相关阅读:
    团队项目个人工作总结(4.27)
    团队项目个人工作总结(4.26)
    团队项目个人工作总结(4.25)
    评测—输入法
    学习进度(2016.4.24)
    团队项目个人工作总结(4.24)
    团队项目个人工作总结(4.23)
    第一阶段冲刺(第四天)
    典型用户和用户场景描述
    第一阶段冲刺(第三天)
  • 原文地址:https://www.cnblogs.com/htynkn/p/guava_1.html
Copyright © 2020-2023  润新知