Guava 是一個 Google開發的 基於java的類庫集合的擴展項目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 這些高質量的 API 可使你的JAVA代碼更加優雅,更加簡潔,讓你工做更加輕鬆愉悅。下面咱們就簡單的介紹一下Guava的大體的功能!java
Guava項目託管在github上,可使用sudo git clone https://github.com/google/guava.git下載Guava源碼,從源碼能夠看到,Guava主要有下面的幾個包:
annotations:普通註解類型git
base:基本工具類庫和接口github
Cache:緩存工具包,很是簡單易用且功能強大的JVM內緩存編程
collect:帶泛型的集合接口擴展和實現,以及工具類,這裏你會發現不少好玩的集合緩存
eventbus:發佈訂閱風格的事件總線網絡
hash: 哈希工具包數據結構
io:IO工具包併發
math:數學計算工具包異步
net:網絡工具包函數式編程
primitives:八種原始類型和無符號類型的靜態工具包
reflect:反射工具包
concurrent:併發編程工具包
escape:轉義工具
graph:處理基於圖的數據結構
HTML:Html字符串轉義
XML:xml字符串轉義
Guava的使用
基礎工具
1. 使用和避免 null:null 有語言歧義, 會產生使人費解的錯誤, 反正他老是讓人不爽。不少 Guava 的工具類在遇到 null 時會直接拒絕或出錯,而不是默默地接受他們。
2. 前提條件:更容易的對你的方法進行前提條件的測試。
3. 常見的對象方法: 簡化了Object經常使用方法的實現, 如 hashCode() 和 toString()。
4. 排序: Guava 強大的 "fluent Comparator"比較器, 提供多關鍵字排序。
5. Throwable類: 簡化了異常檢查和錯誤傳播
集合類
1. Immutable collections(不變的集合): 防護性編程, 不可修改的集合,而且提升了效率。
2. New collection types(新集合類型):JDK collections 沒有的一些集合類型,主要有:multisets,multimaps,tables, bidirectional maps等等
3. Powerful collection utilities(強大的集合工具類): java.util.Collections 中未包含的經常使用操做工具類
4. Extension utilities(擴展工具類): 給 Collection 對象添加一個裝飾器? 實現迭代器? 咱們能夠更容易使用這些方法。
緩存
本地緩存,能夠很方便的操做緩存對象,而且支持各類緩存失效行爲模式
Functional idioms(函數式)
簡潔, Guava實現了Java的函數式編程,能夠顯著簡化代碼。
併發
1. ListenableFuture(可監聽的Future): Futures,用於異步完成的回調。
2. Service: 控制事件的啓動和關閉,爲你管理複雜的狀態邏輯。
String處理
一個很是很是有用的字符串工具類: 提供 splitting,joining, padding 等操做。
Primitives
擴展 JDK 中未提供的對原生類型(如int、char等)的操做, 包括某些類型的無符號的變量。
Ranges
Guava 一個強大的 API,提供 Comparable 類型的範圍處理, 包括連續和離散的狀況。
IO
簡化 I/O 操做, 特別是對 I/O 流和文件的操做
HASH
提供比 Object.hashCode() 更復雜的 hash 方法, 提供 Bloom filters
EventBus
基於發佈-訂閱模式的組件通訊,可是不須要明確地註冊在委託對象中
Math
優化的 math 工具類
Reflection
Guava 的 Java 反射機制工具類