首页 > 代码库 > Java集合类汇总记录--guava篇

Java集合类汇总记录--guava篇

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