Google Guava 中文指南
溫馨提示:Guava 中文指南的 GitHub 地址為 guava-guide,歡迎大家
Star
、Fork
,糾錯。
Guava 中文指南
Guava 專案包含若干被 Google 的 Java 專案依賴的核心類庫,例如:集合、快取、原生型別支援、併發庫、通用註解、字串處理、I/O 等等。Google 的開發者們每天都在使用這些工具進行專案的開發。但是查閱 Javadoc 並不總是最有效的學習這些類庫的方式。在這裡,我們嘗試為 Guava 中一些最受歡迎和最有用的功能提供更具可讀性的說明。
- 基礎工具[Basic utilities]:讓我們更愉快的使用 Java 語言。
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 沒有提供的原生型別(像
int
和char
)操作,包含了某些型別的無符號變數。區間[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'
}