摘要:尼古拉斯沃茲基碩德我們已經有了,為什么還需要另外一個庫呢因為好用唄日常編碼中經常會遇到下面的代碼經過的修剪后可以變成這樣甚至這樣其實這種結構,就是一個二維映射,把它包裝成了。但的完美處理雙向映射。當然,在使用時,會要求的唯一性。
1. Google CollectionsGoogle Guava是把小巧又鋒利的瑞士軍刀,把你的代碼修剪得整潔又漂亮。
-------------尼古拉斯·沃茲基碩德
我們已經有Apache Commons Collections了,為什么還需要另外一個collections庫呢?
因為好用唄!
日常編碼中經常會遇到下面的代碼:
Map> map = new HashMap >();
經過Guava的修剪后可以變成這樣:
Map> map = Maps.newHashMap();
甚至這樣:
Tabletab = HashBaseTable.create(); //其實這種結構,就是一個二維映射,Guava把它包裝成了table。 //還沒完,變成這樣后,訪問起來比之前方便多了,直接拿兩個維度去拿結果。 String res = tab.get("1", "1");
當然Lists和Sets也有這樣的用法:
Lists.newArrayList();
Sets.newHashSet();
有時候我們需要一些測試數據構造一個不可變的List,一般都會這么寫:
Listlist = new ArrayList (); list.add("a"); list.add("b"); list.add("c"); list.add("d");
有了Guava可以這樣:
ImmutableListof = ImmutableList.of("a", "b", "c", "d");
Map也一樣
ImmutableMapmap = ImmutableMap.of("key1", "value1", "key2", "value2");
有時候要用到雙向映射,比如說根據學號查詢名字和根據名字查詢學號,這時候一般都需要建兩個Map分別由學號映射到名字,由名字映射到學號。
但Guava的BiMap完美處理雙向映射。
BiMapidNameMap = HashBiMap.create(); idNameMap.put(1,"xiaohong"); idNameMap.put(2,"xiaoming"); idNameMap.put(3,"xiaolan"); System.out.println("idNameMap:"+idNameMap); BiMap nameIdMap = idNameMap.inverse(); System.out.println("nameIdMap:"+nameIdMap);
當然,在使用BiMap時,會要求Value的唯一性。如果value重復了則會拋出錯誤:java.lang.IllegalArgumentException。
inverse()會返回一個反轉的BiMap,但是注意這個反轉的map不是新的map對象,只是與原始map的一種關聯,這樣你對于反轉后的map的所有操作都會影響原始的map對象。
為了從文件中讀取內容一般操作如下:
File file = new File(getClass().getResource("/aaa.txt").getFile()); BufferedReader reader; String text = ""; try { reader = new BufferedReader(new FileReader(file)); String line = null; while (true) { line = reader.readLine(); if (line == null) { break; } text += line.trim() + " "; } reader.close(); reader = null; } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
Guava看了之后說:太長了,看我的:
File file = new File(getClass().getResource("/aaa.txt").getFile()); Listlines = null; try { lines = Files.readLines(file, Charsets.UTF_8); } catch (IOException e) { e.printStackTrace(); }
整個世界清靜了!
未完待續···文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70350.html
摘要:最基本的區別是會一直保存所有添加的元素,直到顯式地移除。相對地,為了限制內存占用,通常都設定為自動回收元素。消息接收方消息發起方同步異步注冊事件觸發事件處理這個錯誤可能是由于中對應方法拋出了異常。 緩存 Guava Cache提供了內存緩存功能。內存緩存需要考慮很多問題,包括并發問題,緩存失效機制,內存不夠用時緩存釋放,緩存的命中率,緩存的移除等等。 當然這些東西Guava都考慮到了。...
摘要:緩存總體可分為兩種集中式緩存和分布式緩存集中式緩存與分布式緩存的區別其實就在于集中與非集中的概念,其對象可能是服務器內存條硬盤等。內存條版本緩存集中在一臺服務器的一條內存條上,為集中式緩存。 背景 緩存的主要作用是暫時在內存中保存業務系統的數據處理結果,并且等待下次訪問使用。在日長開發有很多場合,有一些數據量不是很大,不會經常改動,并且訪問非常頻繁。但是由于受限于硬盤IO的性能或者遠程...
摘要:緩存總體可分為兩種集中式緩存和分布式緩存集中式緩存與分布式緩存的區別其實就在于集中與非集中的概念,其對象可能是服務器內存條硬盤等。內存條版本緩存集中在一臺服務器的一條內存條上,為集中式緩存。 背景 緩存的主要作用是暫時在內存中保存業務系統的數據處理結果,并且等待下次訪問使用。在日長開發有很多場合,有一些數據量不是很大,不會經常改動,并且訪問非常頻繁。但是由于受限于硬盤IO的性能或者遠程...
摘要:前言在上文源碼分析原理中分析了的相關原理。我在北京模擬執行你在哪兒回復最后執行結果開始提問提問完畢,我去干其他事了收到消息你在哪兒等待響應中。。。。。回復我在北京這樣一個模擬的異步事件回調就完成了。 showImg(https://segmentfault.com/img/remote/1460000015643387?w=2048&h=1150); 前言 在上文「Guava 源碼分析...
摘要:前言在上文源碼分析原理中分析了的相關原理。我在北京模擬執行你在哪兒回復最后執行結果開始提問提問完畢,我去干其他事了收到消息你在哪兒等待響應中。。。。。回復我在北京這樣一個模擬的異步事件回調就完成了。 showImg(https://segmentfault.com/img/remote/1460000015643387?w=2048&h=1150); 前言 在上文「Guava 源碼分析...
閱讀 1478·2021-10-14 09:43
閱讀 1442·2021-10-09 09:58
閱讀 1937·2021-09-28 09:42
閱讀 3727·2021-09-26 09:55
閱讀 1752·2021-08-27 16:23
閱讀 2755·2021-08-23 09:46
閱讀 906·2019-08-30 15:55
閱讀 1405·2019-08-30 15:54