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

老司機阿粉帶你玩轉 Guava 集合類

開發 后端
這篇文章阿粉帶大家學習開源工具 Guava 集合的相關類使用方法,日常開發中我們善于使用這些工具類,不要自己重復造輪子。

 日常開發中,阿粉經常需要用到 Java 提供集合類完成各種需求。Java 集合類雖然非常強大實用,但是提供功能還是有點薄弱。

舉個例子,阿粉最近接到一個需求,從輸入一個文檔中,統計一個關鍵詞出現的次數。代碼如下:

 

 

 

 

雖然這個需求使用 Map 可以輕松搞定,但是阿粉還是覺得這種寫法有點笨拙,如果沒有判空,將會導致 NPE 異常。

如果很多地方需要功能,我們就可以抽象出來,將其封裝成工具類。

不過上面的功能大家就不需要自己封裝,一款來自 Google 開源工具類-Guava,可以輕松的解決上面的統計問題。

Guava 介紹

Guava 是一款 Google 開源工具類,包含許多 Google 內部 Java 項目依賴的核心類。Guava 擴展 Java 基礎類工程,比如集合,并發等,也增加一些其他強大功能,比如緩存,限流等功能。

另外 Guava 推出一些類,如 Optional,甚至被 Java 開發者學習,后續增加到 JDK 中。

目前 Guava Github 倉庫已有 36k star,可以見到 Guava 受歡迎程度。

 

 

 

 

Guava 核心功能包括多個模塊,今天阿粉主要帶大家玩轉 Guava 集合類。

擴展集合類

Guava 創造很多 JDK 沒有,但是我們日常卻明顯有用的新集合類型。這些新類型使用 JDK 集合接口規范,所以使用方法與 JDK 集合框架差不多,并沒有增加很多使用難度。

Multiset

阿粉第一次見到 Multiset 這個類,還以為是 Set 接口子類。實際上此『Set』,僅僅只是數學上集合概念。

Multiset 繼承 JDK Collection 接口,我們可以多次增加相同的元素,另外Multiset 最大特定將會為元素計數,我們可以將它類似等同為 Map

使用 Multiset可以輕松解決開頭的問題。

 

 

 

 

使用 Multiset 簡化了代碼,并且再也不用擔心新 NPE 的問題。

跟 JDK 集合類一樣,Multiset也有許多子類。

 

 

來源于 Github

 

 

這里阿粉提醒一下大家,雖然上面說過我們可以將 Multiset 看做 Map

Multimap

阿粉有時會在業務需求中使用 Map

1a->[1,2,3] b->4,c->[6,5]

使用 Map + List 這種結構比較笨拙,并且代碼實現也比較繁瑣。Multimap 正式 Guava 中解決這種問題的新出的一個雷。

使用 Multimap 實現代碼如下:

 

 

 

 

這里阿粉使用 Multimap 子類 HashMultimap,其行為類似為 Map

Multimap還有其他子類,如圖所示:

 

 

來源于 Github

 

 

BiMap

BiMap 可以用來實現鍵值對的雙向映射需求,這樣我們就可以通過 Key 查找對對應的Value,也可以使用 Value 查找對應的 Key。

這個需求如果使用 Map 實現,我們就不得不使用兩個 Map,維護雙向關系,并且任何改動還要保持同步。

 

 

 

 

使用 BiMap 修改上面的代碼:

 

 

 

 

這里需要注意,BiMap#put方法不能加入重復元素, 若加入,將會拋錯。如果若特定值一定要替換,可以使用 BiMap#forcePut代替。

敲黑板,這個知識點記下來。阿粉使用過程中,就踩過這個坑。

同樣的 BiMap 也有各種實現類:

 

 

來源于 Github

 

 

其他擴展集合類

Guava 另外還提供其他集合類,不過這些類使用起來有點復雜,阿粉還未在業務代碼中使用過,這里簡單提下,感興趣同學可以深入了解一下。

  • Table
  • ClassToInstanceMap
  • RangeSet
  • RangeMap

集合工具類

除了上面提到的新集合類以外,Guava 提供通用的工具類:

 

 

來源于 Github

 

 

這些工具類需對使用的方法,我們可以快速創建集合,分割集合,轉化集合等。

快速創建集合實例

使用工具類,我們可以快速創建集合。例如:

  1. 1List<String> list=Lists.newArrayList(); 
  2. 2Set<String> set=Sets.newHashSet(); 
  3. 3Map<String,String> map=Maps.newHashMap(); 

相比于 new 集合方法,Guava 方法創建方式更加簡單。

  1. 1List<String> list=new ArrayList<String>(); 
  2. 2Set<String> set=new HashSet<String>(); 
  3. 3Map<String,String> map=new HashMap<String, String>(); 

Guava 工具類智能推導 List 泛型,再也不用兩側都重復寫泛型了。

另外還可以指定集合類的初始化大小。

 

 

 

 

Lists.transform

Lists#transform方法可以替代繁瑣 for 循環,將元素轉化,創建一個新集合類。

 

 

 

 

不過使用這個方法我們要注意一點。

Lists#transform 內部使用懶加載的機制,只有在調用獲取的元素的時候,如result.get 才會真正使用 Function 從源 List 獲取元素,做相應的轉化。每次獲取元素都將會使用 function 進行轉化。

所以使用 Lists#transform 得到 List 僅僅只是源 List 一個視圖,任何對源List 的元素修改,都將會被反應到創建之后的 List 。任何對創建之后 List 中的元素進行修改,都不會生效。下次再次讀取元素時,將會發現相應修改的丟失了。。。

阿粉之前就踩過這個坑,如果你有這種需求,可以使用以下方式創建一個新集合:

 

 

 

 

JDK8 之前版本,阿粉經常使用該方法轉化 List 中的元素。不過你如果使用 JDK8,阿粉還是推薦使用 Stream 流式編程。

交集并集差集

Sets 提供幾個方法,可以快速求出兩個 Set 集合的交集,并集以及差集。

不可變集合

不可變(Immutable)集合,顧名思義集合不可以被修改。初始創建不可變集合時嗎,需要傳入數據源,創建完成之后,集合就再也不能修改,增加,刪除元素,否則將會報錯。

這是一種防御性策略,防止集合在后續操作中被修改,從而引發問題。

不可變集合優點在于:

  • 由于不可變集合僅僅只能讀,多線程并發天然安全
  • 由于不可變集合固定不變,可以將其當做常量安全,不用單線其他人修改
  • 不可變集合占用更少內存空間
  • 不可變集合不可以被修改,所以不用擔心其他程序任意修改集合

Guava 不可變集合支持 JDK 所有集合接口:

 

 

 

 

我們可以使用如下幾種方式創建不可變集合,以 ImmutableList 為例:

 

 

 

 

總結

這篇文章阿粉帶大家學習開源工具 Guava 集合的相關類使用方法,日常開發中我們善于使用這些工具類,不要自己重復造輪子。

本篇文章僅僅只是介紹 Guava 一小部分功能,還有很對功能,阿粉也覺得很好用在。這里推薦大家去查看 Guava 官方 wiki,查看具體使用方法。

如果大家還想知道其他開源工具類,給阿粉點個贊,下次給大家帶來十分好用開源工具類~

[[317842]]

 

責任編輯:武曉燕 來源: Java極客技術
相關推薦

2018-07-12 09:59:39

microServicmockautoTest

2020-07-09 07:54:35

ThreadPoolE線程池

2016-11-28 16:09:37

2022-12-14 15:16:51

2017-03-17 15:10:52

微信消息撤回功能

2018-03-07 10:50:46

MySQL分布式存儲

2018-05-15 16:57:23

程序員

2020-04-02 08:47:04

開發網站技術

2020-08-25 07:32:42

工具對象 Java

2018-03-14 10:44:34

數據庫MySQLMGR

2022-09-01 07:24:30

鴻蒙OSHarmonyOS微內核

2020-10-19 07:50:32

Linux命令系統

2017-07-17 17:13:58

老司機

2019-09-19 08:17:02

數據分析AB

2017-05-24 10:58:28

linux系統技巧

2020-11-09 14:15:23

代碼菜鳥老司機

2020-10-30 07:43:35

Jenkins配置前端

2021-06-16 09:55:40

程序員開源編程語言

2021-08-19 07:34:55

RabbitMQLinuxWindows

2018-10-09 09:42:27

MySQL優化單表
點贊
收藏

51CTO技術棧公眾號

欧美老少配视频| 久久成人免费日本黄色| 欧美精品一区二区精品网| 国内精品在线观看视频| 国产最新视频在线| 韩国av一区二区三区四区| 午夜精品久久久久久久99黑人 | 香蕉免费毛片视频| 精品日韩一区| 欧美成人在线直播| 91色国产在线| 91美女主播在线视频| 国产拍欧美日韩视频二区| 91精品国产91久久久久青草| 亚洲成人av影片| 欧美激情视频一区二区三区在线播放 | 在线电影欧美日韩一区二区私密| 日本高清免费观看| 日韩av一级| 精品人伦一区二区三区蜜桃网站 | 免费a级人成a大片在线观看| www.色精品| 91视频在线免费观看| 国产成人av免费| 一区二区三区高清视频在线观看| 日韩中文在线中文网三级| 欲求不满的岳中文字幕| 调教视频免费在线观看| 99视频有精品| 成人h视频在线观看| 亚洲无码精品在线播放| 老鸭窝毛片一区二区三区| 久久久久久久久久久人体| 男人晚上看的视频| 老司机亚洲精品一区二区| 在线看一区二区| 国产原创popny丨九色| 中文在线观看免费| 亚洲柠檬福利资源导航| 亚洲一卡二卡| 精品国产99久久久久久宅男i | 簧片在线免费看| 欧美gay视频| 欧美日韩免费观看中文| 中文字幕人妻熟女人妻洋洋| 免费超碰在线| 成人免费在线视频观看| 亚洲不卡1区| 涩涩视频在线观看免费| 波多野结衣一区二区三区| 国产乱码精品一区二区三区日韩精品 | 国产亚洲激情| 日本欧美精品在线| www.国产毛片| 日本美女一区二区三区| 久久精品久久久久电影| 一级在线观看视频| 日韩在线观看| 美日韩精品视频免费看| 久久久久久久福利| 日韩视频二区| 国产99久久精品一区二区| 波多野结衣视频免费观看| 日本系列欧美系列| 成人写真视频福利网| 国产ts人妖调教重口男| 国产成人精品免费在线| 国产三区精品| 国产一级片在线播放| 国产精品久久久久久久久免费相片| 亚洲国产午夜伦理片大全在线观看网站 | 在线观看日本一区| www.在线视频| 亚洲成av人片在线观看无码| a√天堂在线观看| 免费污视频在线一区| 欧美精品 国产精品| 四虎国产精品免费| 婷婷精品在线观看| 最好看的2019的中文字幕视频| 色撸撸在线视频| 欧美三级网页| 国产成人97精品免费看片| 在线播放成人av| 粉嫩欧美一区二区三区高清影视 | 国产精品成人一区二区三区吃奶| 中文字幕视频免费观看| 国产成人av一区二区| 久久影院理伦片| 操你啦在线视频| 欧美日韩在线另类| 久久精品亚洲天堂| 欧美粗大gay| 欧美精品vⅰdeose4hd| 手机免费看av片| 欧美天天综合| 国内精品视频久久| 又污又黄的网站| 99精品热视频| 亚洲第一综合网站| 丝袜美腿一区| 精品乱人伦小说| 五月激情四射婷婷| 亚洲三级国产| 亚洲精品欧美一区二区三区| 免费资源在线观看| 亚洲国产精品天堂| 亚洲综合激情视频| 婷婷综合电影| 高清欧美性猛交| 国产视频一区二区三区四区五区| 91美女精品福利| 91看片淫黄大片91| 韩日一区二区| 亚洲精品美女在线| 免费中文字幕在线| 免费的成人av| 欧美一区二区三区四区五区六区| 欧美天堂在线视频| 亚洲欧美日韩小说| 国产成人亚洲精品无码h在线| 国产色99精品9i| 一区二区三区回区在观看免费视频| 国产精品白嫩白嫩大学美女| 天堂在线一区二区| 久久久综合香蕉尹人综合网| 日韩大片b站免费观看直播| 亚洲蜜桃精久久久久久久| av视屏在线播放| 四虎视频在线精品免费网址| 日韩国产一区三区| 国产精品99无码一区二区| 黄色亚洲在线| 亚洲自拍偷拍区| 黄色一级大片在线免费看产| 91久久精品一区二区二区| 蜜臀av免费观看| 免费成人网www| 欧美一区二粉嫩精品国产一线天| 俄罗斯嫩小性bbwbbw| 99re亚洲国产精品| 成人黄色大片网站| 超碰在线成人| 亚洲性生活视频| 在线观看日韩中文字幕| 99久久er热在这里只有精品15| 人妻无码一区二区三区四区| 国产精品成人**免费视频| 日韩资源在线观看| 国产精品日韩无码| 亚洲人吸女人奶水| 黑人无套内谢中国美女| 欧美欧美全黄| 国产精品美女久久久久av福利| 欧美性爽视频| 亚洲精品wwwww| 国产在线精品观看| 97精品视频在线观看自产线路二| 欧美日韩性生活片| 久久97视频| 国产精品麻豆va在线播放| 亚洲成人777777| 亚洲图片欧美一区| 日本免费福利视频| 天堂蜜桃一区二区三区| 日韩一区二区三区高清| 欧美v亚洲v综合v国产v仙踪林| 爱福利视频一区| www.蜜臀av| 天天免费综合色| 亚洲精品成人无码| 久久黄色级2电影| 国产 欧美 日韩 一区| 国偷自产av一区二区三区| 中文字幕欧美精品在线| 国产乱子伦精品无码码专区| 亚洲精品乱码久久久久久久久 | 无码人妻av一区二区三区波多野 | 久久av中文字幕片| 日本一级黄视频| 欧美一区自拍| 欧美精品在线视频观看| 日韩性xxxx| 欧洲精品视频在线观看| 国产va在线播放| 久久新电视剧免费观看| 特黄视频免费观看| 国产精品普通话对白| 亚洲激情图片| 国产精品一区二区三区美女| 国产精品久久久久久久久免费看| 97超碰资源站在线观看| 亚洲精品日韩在线| 国产av无码专区亚洲av| 色视频欧美一区二区三区| 久久国产波多野结衣| 日本美女一区二区| 福利视频免费在线观看| av在线不卡免费观看| 成人av免费在线看| 成人精品一区二区三区电影| 欧美精品福利在线| 婷婷成人激情| 亚洲男人的天堂网站| 日本一级淫片色费放| 国产清纯在线一区二区www| 91porn在线| 蜜臀a∨国产成人精品| 无码中文字幕色专区| 偷拍欧美精品| 日本在线成人一区二区| 韩国女主播一区二区三区| 国产欧美精品va在线观看| 漫画在线观看av| 欧美丰满少妇xxxx| 亚洲成a人v欧美综合天堂麻豆| 日韩国产精品一区| 亚洲国产精品久久久久爰性色| 欧美三级三级三级爽爽爽| 欧美亚韩一区二区三区| 亚洲黄色小说网站| 嘿嘿视频在线观看| 久久久国产午夜精品| 欧美做受高潮中文字幕| 国产精品资源网站| 午夜一区二区视频| 蜜桃视频一区二区三区在线观看 | 日本免费在线视频不卡一不卡二| 黄页免费在线观看视频| 欧美私人啪啪vps| 日本久久高清视频| 五月精品视频| 亚洲AV无码成人精品一区| 日韩欧美网站| 亚洲永久激情精品| 三区四区不卡| 亚洲精品国产一区| 不卡在线一区| 亚洲欧美精品| 欧美aaaaaaaaaaaa| 亚洲啪啪av| 国产精品7m凸凹视频分类| 一本久道久久综合狠狠爱亚洲精品| 精品日韩欧美一区| 色狠狠久久av五月综合| 成人aaaa| 一区二区三区四区欧美| 日韩专区精品| 日本丰满大乳奶| 综合国产精品| 黄色激情在线视频| 亚洲一区二区三区高清| 免费无码国产v片在线观看| 亚洲一区二区三区高清不卡| 免费看一级大黄情大片| 亚洲在线视频| www.日日操| 久久黄色级2电影| 国模大尺度视频| av中文字幕一区| 亚洲一区二区三区日韩| 中文字幕av不卡| 中文字幕在线2021| 亚洲国产日韩av| 免费看日批视频| 欧美午夜影院一区| 九热这里只有精品| 欧美日韩免费在线观看| а中文在线天堂| 欧美高清视频在线高清观看mv色露露十八 | 亚洲看片免费| 91色国产在线| 国产高清在线精品| 精品亚洲一区二区三区四区| 久久精品久久综合| 在线中文字日产幕| 久久你懂得1024| 免费黄色激情视频| 亚洲国产毛片aaaaa无费看 | 欧美丝袜第三区| a毛片在线免费观看| 亚洲第一av网站| 精品人妻一区二区三区麻豆91| 亚洲第一视频在线观看| 国产九九在线| 久久69精品久久久久久国产越南| 日韩大片免费观看| 亚洲aaa激情| 丝袜连裤袜欧美激情日韩| 亚洲视频小说| 一本久道久久综合狠狠爱| 国产高清视频网站| av午夜一区麻豆| 成人免费视频网站入口::| 欧美日韩视频免费播放| 国产精品自拍电影| 亚洲欧美成人精品| 午夜在线激情影院| 国产精国产精品| a看欧美黄色女同性恋| 水蜜桃亚洲精品| 亚洲一级一区| 九九九九九伊人| 国产香蕉久久精品综合网| 在线观看福利片| 最新日韩av在线| 亚洲精品中文字幕乱码三区91| 91精品国产综合久久婷婷香蕉 | 免费人成自慰网站| 蜜臀av一区二区| 中国极品少妇videossexhd | 中文字幕在线观看一区二区三区| 国精品一区二区| 亚洲午夜精品一区| 久久久激情视频| 中文字幕在线观看视频网站| 日韩色视频在线观看| av在线二区| 国产成人一区二区在线| 欧美亚洲色图校园春色| 欧美成人精品免费| 国产精品亚洲一区二区三区妖精 | 人妻 日韩 欧美 综合 制服| 亚洲少妇30p| 中文字幕理论片| 国产一区二区三区直播精品电影 | 在线亚洲免费视频| 色在线免费视频| 国模精品系列视频| jazzjazz国产精品久久| 性生活免费观看视频| 韩国精品在线观看| 51精品免费网站| 7777精品久久久大香线蕉 | 国产精品福利一区二区| 国产精品第6页| 亚洲香蕉在线观看| 日韩精品第一| 一区二区三区av| 久久99精品久久久久婷婷| 91禁男男在线观看| 欧美日韩www| 免费a在线看| 91精品国产综合久久久久久丝袜| 91精品国产91久久综合| 国产成人美女视频| 亚洲精品午夜久久久| 国产www免费观看| 欧美国产日韩一区二区在线观看| 日韩在线观看中文字幕| 老司机午夜免费福利视频| 国产精品一级在线| 日韩免费一二三区| 日韩国产精品一区| 精品欧美一区二区三区在线观看| 日韩国产欧美一区| 久久se精品一区二区| 五月天色婷婷丁香| 精品国产一区二区三区四区四| 男男gaygays亚洲| 久久精品国产美女| 日韩国产欧美在线视频| 麻豆亚洲一区| 亚洲AV无码国产精品午夜字幕| 精品亚洲一区二区| 日韩网站中文字幕| av动漫免费观看| 国产精品亚洲午夜一区二区三区 | 亚洲女同一区| 中文字幕1区2区| 精品久久久久久久久国产字幕| 性xxxx视频播放免费| 深夜福利国产精品| 免费一级欧美片在线观看网站| 国产一二三区在线播放| 99久久久精品| 中文永久免费观看| 蜜臀久久99精品久久久久久宅男| 精品欧美午夜寂寞影院| 激情综合网俺也去| 亚洲精品国产一区二区精华液| 日韩在线视频观看免费| 国产精品国产福利国产秒拍| 91成人精品| 一区二区三区免费在线观看视频| 欧美三片在线视频观看 | 狠狠色狠狠色综合婷婷tag| 国产九九在线观看| 亚洲一二三四在线| 成人综合影院| 黄色99视频| 久久97超碰国产精品超碰| 亚洲精品77777| 综合欧美国产视频二区| 狼人天天伊人久久| 欧美午夜精品理论片| 精品国产精品三级精品av网址| 69久久夜色| 久久精品二区| 国产精品77777|