使用Guava编写优雅代码

来源:互联网 发布:手机淘宝神笔使用教程 编辑:程序博客网 时间:2024/05/21 17:29

What is Guava

这个Guava当然不是指水果,Guava 是来自Google的工具类库集合,包含了collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, Math等等。

Why Guava

Guava有点类似于Apache Commons库,两者之间的区别在Stackoverflow上已经很好的回答了这个问题,总结来说就是Guava相对来说设计更优秀、文档齐全、代码质量高、社区更活跃,Guava更加“Morden”。如果你做Java开发,就该把Guava加入到你的项目中。

NOTE: This image was resized. To view it full-size, click on the image.

Guava vs Apache Commons

Using Guava

Maven

<dependency>    <groupId>com.google.guava</groupId>    <artifactId>guava</artifactId>    <version>18.0</version></dependency>

或直接到 Maven中央库下载jar包。
Object common methods

public class Employee implements Comparable {    private String name;    private Integer age;    private Job job;    // methods ...    public int compareTo(Employee other) {        return ComparisonChain.start()        // 以英文字母(从a到z)的自然顺序,NULL值放在最后            .compare(this.name, other.name, Ordering.natural().nullsLast())        // 以数字的反序(从大到小),NULL值处于最后            .compare(this.age, other.age, Ordering.natural().reverse().nullsLast())            .compare(this.job, other.job, Ordering.natural().nullsLast())            .result();    }    @Override    public int hashCode() {        return Objects.hashCode(name, age, job);    }    @Override    public String toString () {        return MoreObjects.toStringHelper(this)            .omitNullValues()            .add("name", name)            .add("age", age)            .add("job", job)            .toString();    }

Lists and MutiMap

    List< Map< String, Object> > maps = Lists.newArrayList();    List< String > langs = Lists.newArrayList("中文","English","日本語",null);    String lang = Joiner.on("|").useForNull("Unkown").join(langs);    // 中文|English|日本語|Unkown    System.out.println(lang);                                                       // Like Map< Job, Collection< Employee > >    Multimap< Job, Employee > multimap = ArrayListMultimap.create();    multimap.put(Job.CEO, new Employee("Tom",45));    multimap.put(Job.DESIGNER, new Employee("Jack",24));    multimap.put(Job.DEVELOPER, new Employee("Alice", 31));    multimap.put(Job.DEVELOPER, new Employee("Jhone", 25));    multimap.put(Job.DEVELOPER, new Employee("Jim", 27));

更多代码示例可以关注我的Glist。

More Resource

  1. 首要推荐官方的WIKI,这个最新最全,并发编程网上有中文的翻译,但是中文翻译排版很不好,英文不好又想参考官网文档的可以看看。
  2. OSchina上有几篇翻译不错的教程:
      Guava 教程1-使用 Google Collections,Guava,static imports 编写漂亮代码
      Guava 教程2-深入探索Google Guava 库
      Guava 教程3-Java 的函数式编程,通过 Google Collections 过滤和调用
      Guava 教程4-条件,多重映射和分片
  3. “使用Google Guava来编写优雅的代码”系列,对Guava的集合做了简单介绍。
      集合1
      集合2
      集合3(Multimap)
      集合4(BiMap)
  4. 博客园里的某一系列学习笔记。
  5. ITEYE上的一篇Google Guava 库用法整理,使用Guava前后的代码对比很直观,没有接触过的童鞋推荐首先看看这篇。
  6. Speaker Deck上的这个Guava By Example也是很赞,同样也是对使用Guava前后的代码做了直观的对比。
  7. Oschina上转载的另一篇不错的文章:使用 Google Guava 美化你的 Java 代码。
  8. 如果以上都满足不了你的求知欲,可以看看[PACKT]出版的这本Getting Started with Google Guava(电子版网上有没有免费下载什么的我才不知道呢~哼!)。  
0 0
原创粉丝点击