Guava/google學習

Guava

Uset Guide https://github.com/google/guava/wiki

官方項目地址: https://github.com/google/guava

中文非官方項目 : http://ifeve.com/google-guava/#more-8776

學習常用的學習,有些暫時用不到跳過

1.基本工具

1.2 前置條件判斷

Preconditions

Guava在Preconditions類中提供了若干前置條件判斷的實用方法,我們強烈建議在Eclipse中靜態導入這些方法。每個方法都有三個變種:

  • 沒有額外參數:拋出的異常中沒有錯誤消息;
  • 有一個Object對象作爲額外參數:拋出的異常使用Object.toString() 作爲錯誤消息;
  • 有一個String對象作爲額外參數,並且有一組任意數量的附加Object對象:這個變種處理異常消息的方式有點類似printf,但考慮GWT的兼容性和效率,只支持%s指示符。

1.3 常見Objects方法

Objects.equals

guava中使用的是 Objects.equal , 但是注意 jdk7開始引入 Obejects.equals

Objects.hashCode

Guava: Objects.hashCode(Object...)

JDK7: Objects.hash(Object...)

Objects.toString

Objects.toStringHelper :

1 // Returns "ClassName{x=1}"
2 Objects.toStringHelper(this).add("x", 1).toString();
3 // Returns "MyObject{x=1}"
4 Objects.toStringHelper("MyObject").add("x", 1).toString();

ComparisonChain

一定要會用,下面是實現compare接口中複寫compareTo方法

UTOOLS1568711062409.png

這種Fluent接口風格的可讀性更高,發生錯誤編碼的機率更小,並且能避免做不必要的工作。

1.4 排序

2.集合Collections

這一部分是最成熟和爲人所知的部分

2.1 不可變集合

爲甚麼要用不可變集合

  • 當對象被不可信的庫調用時,不可變形式是安全的;
  • 不可變對象被多個線程調用時,不存在競態條件問題
  • 不可變集合不需要考慮變化,因此可以節省時間和空間。所有不可變的集合都比它們的可變形式有更好的內存利用率(分析和測試細節);
  • 不可變對象因爲有固定不變,可以作爲常量來安全使用。

具體再瞭解

2.3 強大的集合工具類

jdk和guava集合類關係對比

UTOOLS1568712181052.png

靜態工廠方法

Lists.newArrayList();

Lists.newArrayList(“a”,“b”,“c”);

Lists.newArrayListWithCapacity(100);

Iterables

guava偏向於對iterable處理

Guava提供的工具方法更偏向於接受Iterable而不是Collection類型。在Google,對於不存放在主存的集合——比如從數據庫或其他數據中心收集的結果集,因爲實際上還沒有攫取全部數據,這類結果集都不能支持類似size()的操作 ——通常都不會用Collection類型來表示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章