1. 程式人生 > >Google的Guava類庫簡介

Google的Guava類庫簡介

Guava是一個Google的基於Java的類庫集合的擴充套件專案,包括collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O等等,這些高質量的API可以使你的JAVa程式碼更加優雅,更加簡潔,讓你工作更加輕鬆愉悅。下面我們就開啟優雅Java程式設計學習之旅!

專案相關資訊:

官網:https://github.com/google/guava

Maven:https://mvnrepository.com/artifact/com.google.guava/guava

原始碼包的簡單說明:

com.google.common.annotations:普通註解型別。
com.google.common.base:基本工具類庫和介面。
com.google.common.cache:快取工具包,非常簡單易用且功能強大的JVM內快取。
com.google.common.collect:帶泛型的集合介面擴充套件和實現,以及工具類,這裡你會發現很多好玩的集合。
com.google.common.eventbus:釋出訂閱風格的事件匯流排。
com.google.common.hash: 雜湊工具包。
com.google.common.io:I/O工具包。
com.google.common.math:原始算術型別和超大數的運算工具包。

com.google.common.net:網路工具包。
com.google.common.primitives:八種原始型別和無符號型別的靜態工具包。
com.google.common.reflect:反射工具包。
com.google.common.util.concurrent:多執行緒工具包。
類庫使用手冊:

一、基本工具類:讓使用Java語言更令人愉悅。

使用和避免 null:null 有語言歧義, 會產生令人費解的錯誤, 反正他總是讓人不爽。很多 Guava 的工具類在遇到 null 時會直接拒絕或出錯,而不是默默地接受他們。
前提條件:更容易的對你的方法進行前提條件的測試。
常見的物件方法: 簡化了Object常用方法的實現, 如 hashCode() 和 toString()。
排序: Guava 強大的 "fluent Comparator"比較器, 提供多關鍵字排序。
Throwable類: 簡化了異常檢查和錯誤傳播。
二、集合類:集合類庫是 Guava 對 JDK 集合類的擴充套件, 這是 Guava 專案最完善和為人所知的部分。

Immutable collections(不變的集合): 防禦性程式設計, 不可修改的集合,並且提高了效率。
New collection types(新集合型別):JDK collections 沒有的一些集合型別,主要有:multisets,multimaps,tables, bidirectional maps等等
Powerful collection utilities(強大的集合工具類): java.util.Collections 中未包含的常用操作工具類
Extension utilities(擴充套件工具類): 給 Collection 物件新增一個裝飾器? 實現迭代器? 我們可以更容易使用這些方法。
三、快取: 本地快取,可以很方便的操作快取物件,並且支援各種快取失效行為模式。

四、Functional idioms(函式式): 簡潔, Guava實現了Java的函數語言程式設計,可以顯著簡化程式碼。

五、Concurrency(併發):強大,簡單的抽象,讓我們更容易實現簡單正確的併發性程式碼。

ListenableFuture(可監聽的Future): Futures,用於非同步完成的回撥。
Service: 控制事件的啟動和關閉,為你管理複雜的狀態邏輯。
六、Strings: 一個非常非常有用的字串工具類: 提供 splitting,joining, padding 等操作。

七、Primitives: 擴充套件 JDK 中未提供的對原生型別(如int、char等)的操作, 包括某些型別的無符號的變數。

八、Ranges: Guava 一個強大的 API,提供 Comparable 型別的範圍處理, 包括連續和離散的情況。

九、I/O: 簡化 I/O 操作, 特別是對 I/O 流和檔案的操作, for Java 5 and 6.

十、Hashing: 提供比 Object.hashCode() 更復雜的 hash 方法, 提供 Bloom filters.

十一、EventBus: 基於釋出-訂閱模式的元件通訊,但是不需要明確地註冊在委託物件中。

十二、Math: 優化的 math 工具類,經過完整測試。

十三、Reflection: Guava 的 Java 反射機制工具類。

參考:

http://www.cnblogs.com/peida/archive/2013/06/08/3120820.html(以上內容轉自此篇文章)

http://ifeve.com/google-guava/

https://my.oschina.net/leejun2005/blog/172328

http://www.cnblogs.com/willsuna/p/5224504.html