标签:java collections guava
HashBiMap<K,V>
实现了两份哈希表数据结构(本类独立实现),分别负责两个方向的映射。
EnumBiMap<K,V>
两个EnumMap对象分别负责两个方向的映射。
EnumHashBiMap<K,V>
一个EnumMap对象负责K到V映射,一个HashMap对象负责V到K的影身。
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组成的双向链表。
由两种双向链表保证迭代的顺序。
HashMultiset
使用HashMap<K, class Count>实现。Count是一个计数的类。
LinkedHashMultiset
使用LinkedHashMap<K, classCount>实现。
TreeMultiset
独立实现了一个AVL树,树的每个节点保存了一个int类型的字段,表示元素数量。
ConcurrentHashMultiset
使用ConcurrentHashMap<E,AtomicInteger>实现。
EnumMultiset
使用EnumMap<E, Count>实现。
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>>的形式。
从类到类实例的映射。
特点: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篇,布布扣,bubuko.com
标签:java collections guava
原文地址:http://blog.csdn.net/jiangfuqiang/article/details/37766693