Guava學(xué)習(xí)

通過使用guava庫庶溶,讓代碼簡潔易擴(kuò)展。


1垒棋、條件檢查

業(yè)務(wù)代碼書寫過程中卒煞,各種判空和參數(shù)檢查是不可避免的,重復(fù)繁瑣的代碼讓項(xiàng)目顯得臃腫丑陋叼架。所以我們可以借用guava封裝前置條件檢查的函數(shù)畔裕,下面介紹兩個(gè)最常用的方法衣撬。

checkArgument(boolean) 檢查boolean是否為true,用來檢查傳遞給方法的參數(shù)

checkNotNull(T) 檢查value是否為null扮饶,該方法返回value淮韭,可內(nèi)嵌使用。


2贴届、排序器

Ordering是Guava最常用的Comparator類靠粪,比comparator更易擴(kuò)展。

A Ordering的新建

Order<String> natural = Ordering.natural(); //使用自然順序毫蚓, 例如:整數(shù)從小到大占键,字符串是按字典順序

Order<String> usingToString = Ordering.usingToString(); //使用toString()返回的字符串按字典順序進(jìn)行排序

Ordering byLengthOrdering =new Ordering() {@Override public intcompare(@NullableString s,@NullableString t1) {returnInts.compare(s.length(),t1.length());}}; //自定義排序規(guī)則

B Ordering的使用

reverse() //相反的排序

isOrdered(Collection<T> c) //是否是有序的

sortedCopy(Collection<T> c) //返回排序好的隊(duì)列


3、集合

集合類的封裝元潘,不再需要繁瑣的編碼方式畔乙。

A 不可變集合

ImmutableSet/ImmutableList/ImmutableMap //不可變

ImmutableSortedSet //自動(dòng)排序

ImmutableMultiset //可以重復(fù),可以統(tǒng)計(jì)某個(gè)值在 set集合中有多少個(gè)

B 特殊集合

BiMap //雙向Map,可以通過reverse()反轉(zhuǎn)key-value

MultiMap //value可為一個(gè)list

RangeMap //描述了”不相交的翩概、非空的區(qū)間”到特定值的映射牲距,不合并相鄰的區(qū)間

Forwarding //裝飾器,類繼承ForwardingXXX钥庇,可以重新方法add/delegate等方法


4牍鞠、緩存 Guava Cache

cache是線程安全的,類似于concurrentMap评姨,但是內(nèi)部封裝更多的方法

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


5难述、函數(shù)式編程

重點(diǎn)學(xué)習(xí)的部分,將繁瑣的代碼簡化吐句。函數(shù)式編程最常見的就是用于集合的轉(zhuǎn)換和過濾胁后。

A list值轉(zhuǎn)換

B list轉(zhuǎn)換為map

C 過濾 predicate

6、guava的并發(fā)編程

重點(diǎn)是ListenableFuture嗦枢,ListenableFuture可以監(jiān)控Future是否執(zhí)行完成攀芯。Future的計(jì)算是異步的,但是獲取結(jié)果在主線程中文虏,是會(huì)阻塞主線程的侣诺。但是如果通過ListenableFuture,那么獲取結(jié)果也是新開線程择葡,并不阻塞主線程紧武。適用的場(chǎng)景是多個(gè)任務(wù)并發(fā)計(jì)算剃氧,某個(gè)任務(wù)的計(jì)算時(shí)間特別長敏储。舉例如下

A 直接在主線程獲取結(jié)果并處理,耗時(shí)512ms

B 使用ListenableFuture朋鞍,耗時(shí)14ms

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末已添,一起剝皮案震驚了整個(gè)濱河市妥箕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌更舞,老刑警劉巖畦幢,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異缆蝉,居然都是意外死亡宇葱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門刊头,熙熙樓的掌柜王于貴愁眉苦臉地迎上來黍瞧,“玉大人,你說我怎么就攤上這事原杂∮〔” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵穿肄,是天一觀的道長年局。 經(jīng)常有香客問我,道長咸产,這世上最難降的妖魔是什么矢否? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮脑溢,結(jié)果婚禮上兴喂,老公的妹妹穿的比我還像新娘。我一直安慰自己焚志,他們只是感情好衣迷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著酱酬,像睡著了一般壶谒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上膳沽,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天汗菜,我揣著相機(jī)與錄音,去河邊找鬼挑社。 笑死陨界,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痛阻。 我是一名探鬼主播菌瘪,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了俏扩?” 一聲冷哼從身側(cè)響起糜工,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎录淡,沒想到半個(gè)月后捌木,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嫉戚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年刨裆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彬檀。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡崔拥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凤覆,到底是詐尸還是另有隱情链瓦,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布盯桦,位于F島的核電站慈俯,受9級(jí)特大地震影響通砍,放射性物質(zhì)發(fā)生泄漏吮便。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一抬虽、第九天 我趴在偏房一處隱蔽的房頂上張望略号。 院中可真熱鬧刑峡,春花似錦、人聲如沸玄柠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羽利。三九已至宫患,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間这弧,已是汗流浹背娃闲。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匾浪,地道東北人皇帮。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像蛋辈,于是被迫代替她去往敵國和親属拾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容