Google Guava 類庫簡介
Guava 是一個 Google開發的 基於java的類庫集合的擴展項目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 這些高質量的 API 可以使你的JAVA代碼更加優雅,更加簡潔,讓你工作更加輕松愉悅。下面我們就簡單的介紹一下Guava的大致的功能!
Guava項目托管在github上,可以使用sudo git clone https://github.com/google/guava.git下載Guava源碼,從源碼可以看到,Guava主要有下面的幾個包:
annotations:普通註解類型
base:基本工具類庫和接口
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 反射機制工具類
Google Guava 類庫簡介