温馨提示:Guava 中文指南的 GitHub 地址为「guava-guide」,欢迎大家StarFork,纠错。

Guava 中文指南

Guava 项目包含若干被 Google 的 Java 项目依赖的核心类库,例如:集合、缓存、原生类型支持、并发库、通用注解、字符串处理、I/O 等等。Google 的开发者们每天都在使用这些工具进行项目的开发。但是查阅 Javadoc 并不总是最有效的学习这些类库的方式。在这里,我们尝试为 Guava 中一些最受欢迎和最有用的功能提供更具可读性的说明。

  • 基础工具[Basic utilities]:让我们更愉快的使用 Java 语言。

    • 使用和避免 null [Using and avoiding null]:null的定义很模糊,可能导致令人疑惑的错误,有时会让我们很不爽。很多的 Guava 工具类对null都是快速失败的,拒绝使用null,,而不是盲目的接收它们。
    • 前置条件[Preconditions]:让你的方法更容易进行前置条件的检查。
    • 通用 object 方法[Common object methods]:简化Object方法的实现,例如hashCode()toString().
    • 排序[Ordering]:Guava 有强大且流畅的Comparator类。
    • 可抛的[Throwable]:简化异常和错误的检查机制。
  • 集合[Collections]:Guava 扩展了 JDK 的集合体系,这是 Guava 最成熟且最受欢迎的部分。

    • 不可变集合:为了进行防御性编程、使用常量集合和提高效率。
    • 新集合类型:提供了多集合、多 Map、多表、双向 Map 等。
    • 强大的集合工具类:普通的操作并没有在java.util.Collections中提供。
    • 扩展工具类:装饰Collection?实现Iterator?我们让类似的操作变的更简单。
  • 图[Graphs]:这是一个图结构数据的模型类库,它展现了实体以及图和实体之间的关系,主要的特点包括:

    • 图[Graph]:图的边缘是没有自己标识和信息的匿名实体。
    • 值图[ValueGraph]:图的边缘关联着非唯一的值。
    • 网络[Network]:图的边缘是唯一的对象。
    • 支持可变的、不可变的、定向的和无向的图以及其他一些属性。
  • 缓存[Caches]:支持本地缓存,也支持多种缓存过期行为。

  • 函数风格[Functional idioms]:Guava 的函数风格能够显著的简化代码,但请谨慎使用。

  • 并发[Concurrency]:强大而简单的抽象,让编写正确的并发代码更简单。

    • ListenableFuture: Future,结束时触发回调 。
    • Service:开启和关闭服务,帮助我们处理困难的状态逻辑。
  • 字符串[Strings]:非常有用的字符串处理工具,包括分割、拼接等等。

  • 原生类型[Primitives]:扩展了 JDK 没有提供的原生类型(像intchar)操作,包含了某些类型的无符号变量。

  • 区间[Ranges]:Guava 强大的 API 提供了基于Comparable类型区间比较功能,包连续类型和离散类型。

  • 输入输出流[I/O]:针对 Java 5 和 Java 6 版本,简化了 I/O 操作,尤其是 I/O 流和文件操作。

  • 散列[Hashing]:提供了比Object.hashCode()更负责的哈希实现,包含了 Bloom 过滤器。

  • 事件总线[EventBus]:在不需要组件之间显示注册的情况下,提供了组件之间的发布-订阅模式的通信。

  • 数学运算[Math]:优化了 JDK 已经提供的数学工具类,并彻底的测试了 JDK 没有提供的数学工具类。

  • 反射[Reflection]:对应 Java 反射能力的 Guava 工具类。

Guava 的使用方法:

如果我们使用 Maven 进行项目管理,那么我们只需要在POM.xml中添加如下依赖:

<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version><!-- or, for Android: --><version>23.0-android</version>
</dependency>

而如果我们使用 Gradle 进行项目管理,那么我们则需要在config.gradle中添加如下依赖:

dependencies {compile 'com.google.guava:guava:23.0'// or, for Android:compile 'com.google.guava:guava:23.0-android'
}

翻译声明:本文翻译自 GitHub,Google Guava - Home - User Guide。

Google Guava 中文指南相关推荐

  1. [Google Guava] 11-事件总线

    原文链接 译文连接 译者:沈义扬 传统上,Java的进程内事件分发都是通过发布者和订阅者之间的显式注册实现的.设计EventBus就是为了取代这种显示注册方式,使组件间有了更好的解耦.EventBus ...

  2. Google Guava –与Monitor同步

    Google Guava项目是每个Java开发人员都应该熟悉的库的集合. Guava库涵盖I / O,集合,字符串操作和并发性. 在这篇文章中,我将介绍Monitor类. Monitor是一种同步构造 ...

  3. Google Guava新手教程

    以下资料整理自网络 一.Google Guava入门介绍 引言 Guavaproject包括了若干被Google的 Java项目广泛依赖 的核心库,比如:集合 [collections] .缓存 [c ...

  4. 苹果应用商店AppStore审核中文指南(译本)

    原始地址:http://www.dapps.net/market/appstore/apple-app-store-review-chinese-guidelines.html 前言 相关的文章推荐: ...

  5. Google C++ 风格指南内容整理

    之前一直没有全面的看过Google C++风格指南,现在很多公司进行C++开发都要求按照Google C++风格.在这个网站 http://zh-google-styleguide.readthedo ...

  6. 《Google Glass开发指南》

    <Google Glass开发指南> 基本信息 作者: BestApp工作室 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115349477 上架时间:2014-3-19 ...

  7. 【编程实践】Google Guava 极简教程

    前言 Guava 工程包含了若干被 Google 的 Java 项目广泛依赖 的核心库,我们希望通过此文档为 Guava 中最流行和最强大的功能,提供更具可读性和解释性的说明. 适用人群 本教程是基础 ...

  8. 2013-03-05 By dapps  苹果应用商店AppStore审核中文指南(译本)

    前言 原始链接:http://www.dapps.net/market/appstore/apple-app-store-review-chinese-guidelines.html 相关的文章推荐: ...

  9. 一致性Hash(基于google Guava实现)

    背景 一般我们使用的hash就是md5 sha 之类的工具类,在负载均衡会要求类似同一个ip在增加节点时还是定位到之前的节点,这时就要用到一致性hash.具体实现代码参考(基于google Guava ...

最新文章

  1. avformat_find_stream_info 时间太长
  2. Activiti最全入门教程
  3. jvm系列(二):JVM内存结构
  4. 浅谈大前端的代表技术及其影响,值得我们思考
  5. WordPress 5.1:从CSRF到RCE
  6. centos添加普通用户
  7. 重置计算机的本地策略,手把手教你win10系统本地组策略重置恢复默认的详细方案...
  8. 网络口碑推广主要目的全知道
  9. Leetcode 441. 排列硬币(Python)
  10. P1978 集合 (set)
  11. git命令 统计某成员/全部人员的代码提交量
  12. html中首页的概念,网页开发网页的相关概念你知道吗?
  13. 计算机基础知识---位运算的简介
  14. table标签的不规则布局
  15. Java开发工程师面试总结
  16. PyTorch实现猫狗识别VGG
  17. shell 免杀aspx_webshell免杀套路
  18. uniapp ios启动页自定义
  19. Linux进程间通信的几种方式总结-——linux内核剖析
  20. js计算字数的方法(与word计算出来一样)

热门文章

  1. vue加载组件骨架屏el-skeleton使用
  2. 【计算机网络】第三章 数据链路层
  3. IT转互联网的转行经验
  4. [渗透测试学习靶机02] vulnhub靶场 Empire: Breakout
  5. Kafka中的HW、LEO、LSO等分别代表什么?
  6. 又学到了一个重要的公式,点到直线的距离,欧耶,为自己鼓掌
  7. Android安卓-泛微OA Emobile7自动打卡
  8. 论文写作:MathType公式居中编号居右设置
  9. aaa_base is needed by MySQL-server-5.5.23-1.sles11.x86_64
  10. 《C和指针》阅读笔记