實(shí)用的開源工具庫Guava之Table

Table接口

Table是Guava在jdk的基礎(chǔ)上新增的一種新集合類型,是一個有序的鍵值對集合??赡芡ㄟ^行和列取出對應(yīng)的值。而Table有可能是稀疏的,不是每個行列對都會有值??梢酝ㄟ^行(列)鍵值或取出一行(列)的數(shù)據(jù),也可以同時使用,取出唯一的映射值。返回集合的方法是返回Tabale的中對象的引用,修改集合會修改表,修改表也會修改集合中的對象。所有函數(shù)操作都是可選的,如果所選的函數(shù)不可修改Table,則會拋出UnsupportedOperationException

Table接口的實(shí)現(xiàn)ArrayTable, ForwardingTable, HashBasedTable, ImmutableTable

ArrayTable

ArrayTable的行和列的長度在初始化后是固定不可變的,行與列的鍵值不可為Null。Table接口中的clear及remove方法也不可使用,否則會報錯,不過可以用erase及eraseAll方法代替。ArrayTable比 HashBasedTable和TreeBasedTable更有效地利用內(nèi)存,除非ArrayTable是稀疏的。

注意此實(shí)現(xiàn)并不是線程安全的

ForwardingTable

ForwardingTable是實(shí)現(xiàn)了Table接口的抽象類

HashBasedTable

HashBasedTable擁有Tabel接口的所有方法,通過column(c)columnKeySet()和columnMap()返回的視圖是一個不支持remove()方法的迭代器(Iterator)

此實(shí)現(xiàn)中的所有列和行鍵值,以及對應(yīng)的值也不可為空。通過行查詢比通過列查詢更高效。因?yàn)樗臄?shù)據(jù)是存儲在Map<R, Map<C, V>>這個結(jié)構(gòu)中。理論上查詢列的長度比查詢行的長度會消耗更多的時間。

注意,此實(shí)現(xiàn)同樣非線程安全。

ImmutableTable

ImmutableTable一經(jīng)初始化,就不可以改變它里面的所有值,相當(dāng)于只讀。許多其他重要屬性在ImmutableCollection


RowSortedTable接口

RowSortedTable是一個繼承Table的接口,它的特別之處是表格中的行是有序的

RowSortedTable接口的實(shí)現(xiàn)TreeBasedTable

TreeBasedTable

TreeBasedTable是一個有序的表格,類型List,可以通過自身的comparator比較大小進(jìn)行排序。當(dāng)你構(gòu)造此對象時,如果不為之先指定Comparator,則會使用默認(rèn)的Comparator.

rowKeySet()方法返回一個SortedSet對象,rowMap()方法返回一個SortedMap對象,用來代替Set對象及Map對象。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,839評論 18 399
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,658評論 0 3
  • 一、基本數(shù)據(jù)類型 注釋 單行注釋:// 區(qū)域注釋:/* */ 文檔注釋:/** */ 數(shù)值 對于byte類型而言...
    龍貓小爺閱讀 4,475評論 0 16
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,874評論 11 349
  • 關(guān)注我吧給我一個機(jī)會寫進(jìn)你心里 我是影子這里是我們的微風(fēng)清酒 她不喜歡你你做什么都是多余 文影子 你總是問,為什么...
    微風(fēng)清酒閱讀 678評論 0 18

友情鏈接更多精彩內(nèi)容