1. 程式人生 > >Google Guava 中文指南

Google Guava 中文指南

溫馨提示: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,,而不是盲目的接收它們。
    • 排序[Ordering]:Guava 有強大且流暢的Comparator類。
  • 集合[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'
}