首页 > 代码库 > 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 |
Java集合类汇总记录--guava篇