精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

為什么強烈推薦Java程序員使用Google Guava編程

新聞 前端
目前Google Guava在實際應用中非常廣泛,本篇博客將以博主對Guava使用的認識以及在項目中的經驗來給大家分享!學習使用Google Guava可以讓你快樂編程,寫出優雅的JAVA代碼!

目前Google Guava在實際應用中非常廣泛,本篇博客將以博主對Guava使用的認識以及在項目中的經驗來給大家分享!學習使用Google Guava可以讓你快樂編程,寫出優雅的JAVA代碼!

以面向對象思想處理字符串:Joiner/Splitter/CharMatcher

JDK提供的String還不夠好么?

也許還不夠友好,至少讓我們用起來還不夠爽,還得操心!舉個栗子,比如String提供的split方法,我們得關心空字符串吧,還得考慮返回的結果中存在null元素吧,只提供了前后trim的方法(如果我想對中間元素進行trim呢)。

那么,看下面的代碼示例,guava讓你不必在操心這些:

為什么強烈推薦Java程序員使用Google Guava編程

Joiner/Splitter

Joiner是連接器,Splitter是分割器,通常我們會把它們定義為static final,利用on生成對象后在應用到String進行處理,這是可以復用的。要知道apache commons StringUtils提供的都是static method。更加重要的是,guava提供的Joiner/Splitter是經過充分測試,它的穩定性和效率要比apache高出不少,這個你可以自行測試下~發現沒有我們想對String做什么操作,就是生成自己定制化的Joiner/Splitter,多么直白,簡單,流暢的API!對于Joiner,常用的方法是 跳過NULL元素:skipNulls() / 對于NULL元素使用其他替代:useForNull(String)對于Splitter,常用的方法是:trimResults()/omitEmptyStrings()。注意拆分的方式,有字符串,還有正則,還有固定長度分割(太貼心了!)

其實除了Joiner/Splitter外,guava還提供了字符串匹配器:CharMatcher

為什么強烈推薦Java程序員使用Google Guava編程

CharMatcher

CharMatcher,將字符的匹配和處理解耦,并提供豐富的方法供你使用!

對基本類型進行支持

guava對JDK提供的原生類型操作進行了擴展,使得功能更加強大!

為什么強烈推薦Java程序員使用Google Guava編程

Ints

guava提供了Bytes/Shorts/Ints/Iongs/Floats/Doubles/Chars/Booleans這些基本數據類型的擴展支持,只有你想不到的,沒有它沒有的!

對JDK集合的有效補充

灰色地帶:Multiset

JDK的集合,提供了有序且可以重復的List,無序且不可以重復的Set。那這里其實對于集合涉及到了2個概念,一個order,一個dups。那么List vs Set,and then some ?

為什么強烈推薦Java程序員使用Google Guava編程

Multiset

Multiset是什么,我想上面的圖,你應該了解它的概念了。Multiset就是無序的,但是可以重復的集合,它就是游離在List/Set之間的“灰色地帶”!(至于有序的,不允許重復的集合嘛,guava還沒有提供,當然在未來應該會提供UniqueList,我猜的,哈哈)

來看一個Multiset的示例:

為什么強烈推薦Java程序員使用Google Guava編程

Multiset Code

Multiset自帶一個有用的功能,就是可以跟蹤每個對象的數量。

Immutable vs unmodifiable

來我們先看一個unmodifiable的例子:

為什么強烈推薦Java程序員使用Google Guava編程

unmodifiable

你看到JDK提供的unmodifiable的缺陷了嗎?實際上,Collections.unmodifiableXxx所返回的集合和源集合是同一個對象,只不過可以對集合做出改變的API都被override,會拋出UnsupportedOperationException。也即是說我們改變源集合,導致不可變視圖(unmodifiable View)也會發生變化,oh my god!

當然,在不使用guava的情況下,我們是怎么避免上面的問題的呢?

為什么強烈推薦Java程序員使用Google Guava編程

defensive copies

上面揭示了一個概念:Defensive Copies,保護性拷貝。

OK,unmodifiable看上去沒有問題呢,但是guava依然覺得可以改進,于是提出了Immutable的概念,來看:

為什么強烈推薦Java程序員使用Google Guava編程

Immutable

就一個copyOf,你不會忘記,如此cheap~用Google官方的說法是:we're using just one class,just say exactly what we mean,很了不起嗎(不僅僅是個概念,Immutable在COPY階段還考慮了線程的并發性等,很智能的!),O(∩_∩)O哈哈~guava提供了很多Immutable集合,比如ImmutableList/ImmutableSet/ImmutableSortedSet/ImmutableMap/......

看一個ImmutableMap的例子:

為什么強烈推薦Java程序員使用Google Guava編程

ImmutableMap

可不可以一對多:Multimap

JDK提供給我們的Map是一個鍵,一個值,一對一的,那么在實際開發中,顯然存在一個KEY多個VALUE的情況(比如一個分類下的書本),我們往往這樣表達:Map<k,List<v>>,好像有點臃腫!臃腫也就算了,更加不爽的事,我們還得判斷KEY是否存在來決定是否new 一個LIST出來,有點麻煩!更加麻煩的事情還在后頭,比如遍歷,比如刪除,so hard......

來看guava如何替你解決這個大麻煩的:

為什么強烈推薦Java程序員使用Google Guava編程

Multimap

友情提示下,guava所有的集合都有create方法,這樣的好處在于簡單,而且我們不必在重復泛型信息了。get()/keys()/keySet()/values()/entries()/asMap()都是非常有用的返回view collection的方法。Multimap的實現類有:ArrayListMultimap/HashMultimap/LinkedHashMultimap/TreeMultimap/ImmutableMultimap/......

可不可以雙向:BiMap

JDK提供的MAP讓我們可以find value by key,那么能不能通過find key by value呢,能不能KEY和VALUE都是唯一的呢。這是一個雙向的概念,即forward+backward。在實際場景中有這樣的需求嗎?比如通過用戶ID找到mail,也需要通過mail找回用戶名。沒有guava的時候,我們需要create forward map AND create backward map,and now just let guava do that for you.

為什么強烈推薦Java程序員使用Google Guava編程

BiMap

biMap / biMap.inverse() / biMap.inverse().inverse() 它們是什么關系呢?你可以稍微看一下BiMap的源碼實現,實際上,當你創建BiMap的時候,在內部維護了2個map,一個forward map,一個backward map,并且設置了它們之間的關系。因此,biMap.inverse() != biMap ;biMap.inverse().inverse() == biMap

可不可以多個KEY:Table

我們知道數據庫除了主鍵外,還提供了復合索引,而且實際中這樣的多級關系查找也是比較多的,當然我們可以利用嵌套的Map來實現:Map<k1,Map<k2,v2>>。為了讓我們的代碼看起來不那么丑陋,guava為我們提供了Table。

為什么強烈推薦Java程序員使用Google Guava編程

Table

Table涉及到3個概念:rowKey,columnKey,value,并提供了多種視圖以及操作方法讓你更加輕松的處理多個KEY的場景。

函數式編程:Functions

為什么強烈推薦Java程序員使用Google Guava編程

Functions

上面的代碼是為了完成將List集合中的元素,先截取5個長度,然后轉成大寫。函數式編程的好處在于在集合遍歷操作中提供自定義Function的操作,比如transform轉換。我們再也不需要一遍遍的遍歷集合,顯著的簡化了代碼!

為什么強烈推薦Java程序員使用Google Guava編程

對集合的transform操作可以通過Function完成

斷言:Predicate

為什么強烈推薦Java程序員使用Google Guava編程

Predicate最常用的功能就是運用在集合的過濾當中!

為什么強烈推薦Java程序員使用Google Guava編程

filter

需要注意的是Lists并沒有提供filter方法,不過你可以使用Collections2.filter完成!

check null and other:Optional、Preconditions

在guava中,對于null的處理手段是快速失敗,你可以看看guava的源碼,很多方法的第一行就是:Preconditions.checkNotNull(elements);

要知道null是模糊的概念,是成功呢,還是失敗呢,還是別的什么含義呢?

為什么強烈推薦Java程序員使用Google Guava編程

Preconditions/Optional

Cache is king

對于大多數互聯網項目而言,緩存的重要性,不言而喻!如果我們的應用系統,并不想使用一些第三方緩存組件(如redis),我們僅僅想在本地有一個功能足夠強大的緩存,很可惜JDK提供的那些SET/MAP還不行!

為什么強烈推薦Java程序員使用Google Guava編程

CacheLoader

首先,這是一個本地緩存,guava提供的cache是一個簡潔、高效,易于維護的。為什么這么說呢?因為并沒有一個單獨的線程用于刷新 OR 清理cache,對于cache的操作,都是通過訪問/讀寫帶來的,也就是說在讀寫中完成緩存的刷新操作!其次,我們看到了,我們非常通俗的告訴cache,我們的緩存策略是什么,SO EASY!在如此簡單的背后,是guava幫助我們做了很多事情,比如線程安全。

讓異步回調更加簡單

JDK中提供了Future/FutureTask/Callable來對異步回調進行支持,但是還是看上去挺復雜的,能不能更加簡單呢?比如注冊一個監聽回調。

為什么強烈推薦Java程序員使用Google Guava編程

異步回調

我們可以通過guava對JDK提供的線程池進行裝飾,讓其具有異步回調監聽功能,然后在設置監聽器即可!

責任編輯:張燕妮 來源: 今日頭條
相關推薦

2022-09-07 11:38:04

async代碼前端

2011-07-06 13:38:42

Web

2009-11-04 13:12:33

VB.NET繼承類

2023-07-10 08:44:00

2011-06-30 17:41:46

SEO

2009-11-04 13:46:36

ADO.NET數據庫

2012-06-14 11:14:14

運維Firefox插件

2023-03-17 09:55:10

2012-08-20 09:16:15

Go語言

2024-08-30 09:51:06

JavaPython語言

2014-06-13 11:03:19

程序員

2023-02-16 08:26:41

2016-06-01 10:38:22

開源程序員編程技能

2024-02-27 08:25:52

LiteFlow代碼語法

2023-12-22 14:09:08

AI文本編輯器AiEditor

2015-07-03 09:37:21

程序員外包公司

2020-02-24 10:06:43

Mac軟件工具

2011-09-18 09:42:08

程序員

2013-10-29 10:24:31

程序員漫畫

2015-09-24 09:04:36

程序員
點贊
收藏

51CTO技術棧公眾號

欧美精品三级在线观看| 国产1区2区3区精品美女| 亚洲视频网站在线观看| 婷婷丁香激情网| 自拍视频在线网| 国产一区在线观看麻豆| 久久免费国产视频| 四虎永久免费在线观看| 中文幕av一区二区三区佐山爱| 一区二区三区中文免费| 老牛影视免费一区二区| 亚洲综合精品国产一区二区三区 | 伊人久久精品一区二区三区| 亚洲国产精品成人综合| 成人免费观看网站| 老熟妇一区二区三区| 2023国产精品久久久精品双| 日韩精品www| 国产一级片中文字幕| 高清不卡av| 夜夜夜精品看看| 亚洲国产婷婷香蕉久久久久久99| 成人久久久精品国产乱码一区二区| 天堂蜜桃一区二区三区| 欧美日韩成人精品| 国产精品久久久久久久av| 福利片在线一区二区| 欧美日韩一区 二区 三区 久久精品| 97超碰在线人人| 麻豆传媒视频在线观看| 久久综合九色综合久久久精品综合 | 麻豆91精品91久久久的内涵| 97视频免费观看| 婷婷在线精品视频| 欧美3p在线观看| 亚洲全黄一级网站| 北岛玲一区二区| 日韩中文字幕| 欧美一级电影网站| 成人综合久久网| 日韩高清成人| 色综合亚洲欧洲| 日韩黄色短视频| 欧美xxx黑人xxx水蜜桃| 亚洲婷婷综合久久一本伊一区| 日韩不卡av| 免费在线观看一级毛片| wwwwxxxxx欧美| 国产午夜精品在线| 韩国av电影在线观看| 国产suv精品一区二区6| 亚洲在线免费看| a天堂在线视频| 国产一二精品视频| 91久久伊人青青碰碰婷婷| 一级片视频免费| 黑人精品一区| 一区二区三区精品视频| 蜜臀av.com| av免费在线免费| 一区2区3区在线看| 久久99久久久久久| 爱搞国产精品| 欧美日韩黄色大片| 99999精品视频| 亚洲播播91| 欧美亚洲综合网| 日韩不卡一二三| vam成人资源在线观看| 91精品国产美女浴室洗澡无遮挡| 毛毛毛毛毛毛毛片123| 日韩免费高清视频网站| 亚洲成人黄色网址| 亚洲av片不卡无码久久| 国产精品午夜一区二区三区| 中文字幕自拍vr一区二区三区| 国精品人伦一区二区三区蜜桃| 天天天综合网| 韩国三级日本三级少妇99| 亚洲欧美精品一区二区三区| 日韩国产成人精品| 成人久久18免费网站图片| www.天堂av.com| bt7086福利一区国产| 欧美一卡2卡3卡4卡无卡免费观看水多多| 成人在线免费看| 日韩一区日韩二区| 加勒比成人在线| 欧美大片免费| 欧美精品色一区二区三区| 色欲欲www成人网站| 亚洲区小说区图片区qvod按摩| 亚洲免费电影一区| 亚洲波多野结衣| 亚洲精品乱码久久久久久蜜桃麻豆| 69av视频在线播放| 91麻豆国产在线| 成人97人人超碰人人99| 亚洲午夜精品久久| 国产乱码在线| 欧美日韩国产综合一区二区三区| 亚洲成年人av| 久久一区91| 91精品国产91久久久久福利| 中文字幕+乱码+中文乱码www| 国产福利91精品一区| 欧美日韩精品久久| av在线免费网址| 91久久精品日日躁夜夜躁欧美| 一级网站在线观看| 蜜臀91精品国产高清在线观看| 久久久精品在线观看| 九九精品免费视频| 国产高清成人在线| 午夜精品一区二区在线观看 | 亚洲一区在线视频| 色哟哟精品视频| 特黄特色欧美大片| 欧美日韩成人在线播放| 一本久道久久综合无码中文| 久久嫩草精品久久久精品| 久久久久久国产精品| 亚洲欧美久久久久一区二区三区| 欧美激情免费| 91久久香蕉国产日韩欧美9色| 黑森林av导航| 91精品秘密在线观看| 国产精品va在线播放我和闺蜜| 亚洲精品国产精品乱码不卡| 国产精品欧美一级免费| av动漫在线看| 91麻豆精品激情在线观看最新| 色婷婷av一区二区三区久久| 欧美超碰在线观看| 91网上在线视频| 久久视频这里有精品| 亚洲va欧美va人人爽成人影院| 色综久久综合桃花网| 精品黑人一区二区三区| 91麻豆精品秘密| 精品少妇在线视频| aaa国产精品| 欧美高跟鞋交xxxxhd| 精品国产无码AV| 亚洲人成在线播放网站岛国| 免费一区二区三区在线观看| 国产欧美一区二区三区精品观看 | 日本成人在线网站| 在线播放国产精品| 久久这里只有精品9| 国产婷婷一区二区| 丁香啪啪综合成人亚洲| 在线亚洲a色| 青青久久av北条麻妃黑人| 青青草观看免费视频在线| 婷婷中文字幕一区三区| 91玉足脚交白嫩脚丫| 亚洲激情专区| 麻豆传媒一区二区| 视频二区不卡| 色yeye香蕉凹凸一区二区av| 一女二男一黄一片| 中文字幕佐山爱一区二区免费| 久久久久久久高清| 911精品美国片911久久久| 91美女福利视频高清| 91在线中字| 亚洲第五色综合网| 久久亚洲天堂网| 国产无人区一区二区三区| 在线观看国产中文字幕| 亚洲一区 二区 三区| 91青青草免费观看| www视频在线观看| 亚洲美女福利视频网站| 小泽玛利亚一区二区三区视频| 国产精品欧美极品| 人妻巨大乳一二三区| 亚洲激情网址| 神马影院我不卡| 国产精品久久久久久久久久久久久久久 | 中文在线观看免费视频| 久久天天综合| 宅男av一区二区三区| 一区视频网站| 国产91精品久久久久久久| 成年人视频网站在线| 日韩欧美另类在线| 日本免费一二三区| 久久久99精品免费观看| 欧美专区第二页| 免费在线播放第一区高清av| 亚洲欧美综合一区| 超碰精品在线| 日韩免费av在线| √天堂8在线网| 精品视频偷偷看在线观看| 在线观看免费观看在线| 亚洲国产一区视频| 欧美极品jizzhd欧美18| 成人教育av在线| 在线免费视频一区| 日韩一区二区久久| 欧美 日韩 国产 在线观看| 韩国女主播一区二区三区| 国产精品96久久久久久| 美女日批视频在线观看| 中文在线不卡视频| 亚欧在线观看视频| 91麻豆精品国产无毒不卡在线观看 | 999国产精品视频| 国严精品久久久久久亚洲影视| 日韩色性视频| 日产精品久久久一区二区福利| 色爱综合区网| 色系列之999| 久久国产精品高清一区二区三区| 日韩午夜激情视频| 亚洲天堂中文在线| 在线免费不卡视频| 韩国av免费观看| 亚洲精品国产高清久久伦理二区| 人人妻人人澡人人爽| 91视频www| 亚洲啪av永久无码精品放毛片 | 成人区人妻精品一区二| 精品一区二区三区视频 | 国产精品18p| 自拍偷拍国产亚洲| xxxxx99| 久久精品夜夜夜夜久久| 日本三级日本三级日本三级极| 国产伦精品一区二区三区免费 | 丁香桃色午夜亚洲一区二区三区| 91国内在线播放| 青青草国产精品97视觉盛宴| 成人久久久久久久久| 国产美女诱惑一区二区| 99热在线这里只有精品| 99综合精品| 99热亚洲精品| 狠久久av成人天堂| 国产中文字幕乱人伦在线观看| 欧美69wwwcom| 欧美日韩午夜爽爽| 欧美日韩亚洲一区在线观看| 欧美美女黄色网| 国产精品vip| 欧洲精品在线播放| 午夜精品偷拍| av在线免费观看国产| 狠狠干成人综合网| 欧美综合在线播放| 国产精品日韩精品欧美精品| jizzjizz国产精品喷水| 国产日韩免费| 国产成人av影视| 日本中文在线一区| 五月激情婷婷在线| 国产在线精品一区二区三区不卡| 17c国产在线| 国产成人精品www牛牛影视| 91精产国品一二三| 97精品国产露脸对白| 中国黄色a级片| 亚洲国产精品99久久久久久久久| 一本在线免费视频| 亚洲蜜臀av乱码久久精品| 欧美日韩人妻精品一区二区三区| 亚洲伊人伊色伊影伊综合网| 91午夜视频在线观看| 日本高清视频一区二区| 中文字幕在线观看欧美| 日韩午夜av电影| 亚洲av成人无码网天堂| 一区二区三区 在线观看视| 男人和女人做事情在线视频网站免费观看| 久久亚洲国产成人| sm久久捆绑调教精品一区| 日本国产一区二区三区| 欧美男女视频| eeuss一区二区三区| 日韩极品少妇| 日本黄色播放器| 在线成人国产| 爱情岛论坛亚洲首页入口章节| 国产精品一区专区| 好吊一区二区三区视频| 亚洲国产精品成人久久综合一区| 久操免费在线视频| 色哟哟欧美精品| 国产福利小视频| 亚洲欧美激情在线视频| 国内外激情在线| 国产91精品久| 亚洲成av人片在线观看www| 久久99精品久久久久久秒播放器| 成人一区二区| 激情伊人五月天| 极品少妇xxxx精品少妇偷拍| 国产chinese中国hdxxxx| 国产精品久久久久久久久搜平片| 国产精选第一页| 欧美人妇做爰xxxⅹ性高电影| 手机av在线免费观看| 久久久国产视频91| 一区二区三区短视频| av在线不卡一区| 日韩毛片视频| 免费高清在线观看免费| 国产电影精品久久禁18| 国产性猛交xx乱| 欧美日韩国产麻豆| 97av免费视频| 日韩成人中文字幕| 动漫一区在线| 国产精品稀缺呦系列在线| 欧美理论电影在线精品| 黄色一级片av| 久久国产精品99精品国产| 成人免费av片| 亚洲h精品动漫在线观看| 国产视频在线观看视频| 一区二区在线视频播放| 欧美男体视频| 久久国产精品一区二区三区| 欧美激情成人在线| 日韩在线不卡一区| 国产欧美一区二区精品久导航| 成人午夜视频精品一区| 亚洲精品一区在线观看| 成人在线观看免费网站| 国产日韩一区在线| 日韩一区自拍| 午夜宅男在线视频| 国产日韩三级在线| 极品国产91在线网站| 日韩精品免费在线| 国产va在线视频| 韩国成人av| 亚洲影音一区| 亚洲精品成人无码熟妇在线| 欧美日韩视频免费播放| 少妇av在线播放| 午夜精品一区二区三区在线视 | 亚洲男人7777| 色在线视频观看| 久久久com| 亚洲综合二区| 精品人妻互换一区二区三区| 欧美性高潮床叫视频| 免费一级在线观看| 国产精品成人av性教育| 欧美日韩水蜜桃| www.久久91| 亚洲情趣在线观看| www黄色网址| 久久久久久久久久久久av| 久久a级毛片毛片免费观看| 精品国产一二三四区| 99r国产精品| 午夜精品久久久久久久蜜桃| 中文字幕国产亚洲| www欧美在线观看| 国产小视频免费| 99久久精品费精品国产一区二区| 国产又粗又爽视频| 在线观看久久av| 国产精品18| 拔插拔插海外华人免费| xnxx国产精品| 91在线观看喷潮| 海角国产乱辈乱精品视频| 日韩电影不卡一区| 国产一二三区av| 一区二区三区欧美久久| 天天干,天天操,天天射| 国产99久久精品一区二区| 欧美电影一二区| 中文字幕在线观看91| 欧美性高潮在线| 成人高清免费在线| 国产在线视频欧美一区二区三区| 日韩主播视频在线| 外国一级黄色片| 亚洲精品v天堂中文字幕| 欧美va在线观看| 日本高清视频免费在线观看| 99精品热视频| 夜夜躁很很躁日日躁麻豆| 国内精品久久久| 久久精品高清| 婷婷五月精品中文字幕| 欧美午夜电影网| 国产精品蜜臀| 亚洲午夜精品久久| 91天堂素人约啪| 97视频免费在线| 欧美一级视频一区二区| 围产精品久久久久久久|