1)Guava庫是1個合適很多Java項目的通用工具庫
2)Guava工具庫中包括了:集合Collection、并發Concurrency、原語Primitive、反射Reflection、比較Comparison、I/O操作、哈希Hash、網絡Networking、字符串String、數學函數Math、緩存Caching、內存中的發布/定閱……和各種級別的數據類型
3)需要JDK 6以上版本
在深入Guava庫之前,我們先了解其函數接口,了解這些函數接口有助于我們更好地掌握Guava庫。
1)函數接口是定義了單個方法的接口
2)函數接口包括了盡人皆知的單個抽象方法(SAM,Single Abstract Method)
3)函數接口為Java 8 Lambda表達式提供了基礎
函數接口是很酷的:你指定任何1個接口都可以作為方法參數,還可以在Java 8中傳遞Lambda表達式
4)函數接口可以被當作回調對象
下面的例子是Java 8的函數接口。
1、函數接口帶單個方法參數
@FunctionalInterface{
public boolean check(Order o);
}
接著我們可以創建Lambda表達式,使用上面的函數接口。
IOrder newOrder = (Order o) -> o.getStatus().equals("NEW");
或
IOrder newOrder = (o) ->o.getStatus().equals("NEW");
1)表達式右側是1個簡單的檢查方法的內容――檢查傳遞到Order對象的狀態。
2)當創建了大量能表達需求行動或功能的Lambda表達式后,Lambda表達式的威力才能體現出來。
2、再舉個例子,緊接上面的例子,找出大額定單。
// Lambda表達式找出大額定單
IOrder bigOrderLambda = (Order o) -> o.getQuantity() > 10000000;
// Lambda表達式找出新的大額定單
ITrade issuerBigNewTradeLambda = (o) -> {
return o.getIssuer().equals("Honda") &&
o.getQuantity() > 10000000 &&
o.getStatus().equals("NEW");
}
Google Guava庫在”com.google.common.base”中提供了幾個很有用的SAM,包括:
1)Function
指定了1個接收“T”類型實例并返回“R”類型實例的方法
2)Predicate
指定了1個傳遞“T”類型實例并返回布爾類型的方法
3)Supplier
指定了1個能夠返回值的方法
還需要知道,這些SAM雖然誕生于Guava庫,但是也加入了Java 8。