1. 程式人生 > >Java集合類匯總記錄--guava篇

Java集合類匯總記錄--guava篇

hba nth uav ted enum ranges rac 內部 組成

BiMap

HashBiMap<K,V>

實現了兩份哈希表數據結構(本類獨立實現)。分別負責兩個方向的映射。

EnumBiMap<K,V>

兩個EnumMap對象分別負責兩個方向的映射。

EnumHashBiMap<K,V>

一個EnumMap對象負責K到V映射,一個HashMap對象負責V到K的影身。

MultiMap

HashMultimap<K,V>

使用HashMap<K,HashSet<V>>對象實現。

TreeMultimap<K,V>

使用TreeMap<K,TreeSet<V>>實現。

ArrayListMultimap

使用HashMap<K, ArrayList<V>>實現。

LinkedHashMultimap

使用LinkedHashMap<K, LinkedHashSet<V>>實現。

LinkedListMultimap<K,V>

使用HashMap<K, class KeyList<K,V>>實現。

KeyList是一個雙向鏈表類。保存了一個特定的K。相應的全部Value的值。

另外,LinkedListMultimap還維護了一個由Map中全部的Entry組成的雙向鏈表。

由兩種雙向鏈表保證叠代的順序。

MultiSet

HashMultiset

使用HashMap<K, class Count>實現。Count是一個計數的類。

LinkedHashMultiset

使用LinkedHashMap<K, classCount>實現。

TreeMultiset

獨立實現了一個AVL樹。樹的每一個節點保存了一個int類型的字段,表示元素數量。

ConcurrentHashMultiset

使用ConcurrentHashMap<E,AtomicInteger>實現。

EnumMultiset

使用EnumMap<E, Count>實現。

Table

ArrayTable<R,C,V>

固定大小的二維數組,創建的時候須要指定R和C的有效對象列表。以後不能改動。

內部包括三個數據結構:(1) V的數組,長度為行數量*列數量。(2) 從R對象到index的ImmutableMap。

(3)從C對象到index的ImmutableMap。

HashBasedTable<R,C,V>

內部實現上採用了HashMap<R,HashMap<C,V>>的形式。

TreeBasedTable<R,C,V>

內部實現上採用了TreeMap<R, TreeMap<C,V>>的形式。

MutableClassToInstanceMap

從類到類實例的映射。

TreeRangeSet/TreeRangeMap

特點:Key是一個區間。

僅僅讀集合類

特點:一旦創建後就無法改動。

Interface

JDK or Guava?

Immutable Version

Collection

JDK

ImmutableCollection

List

JDK

ImmutableList

Set

JDK

ImmutableSet

SortedSet/NavigableSet

JDK

ImmutableSortedSet

Map

JDK

ImmutableMap

SortedMap

JDK

ImmutableSortedMap

Multiset

Guava

ImmutableMultiset

SortedMultiset

Guava

ImmutableSortedMultiset

Multimap

Guava

ImmutableMultimap

ListMultimap

Guava

ImmutableListMultimap

SetMultimap

Guava

ImmutableSetMultimap

BiMap

Guava

ImmutableBiMap

ClassToInstanceMap

Guava

ImmutableClassToInstanceMap

Table

Guava

ImmutableTable

Java集合類匯總記錄--guava篇