Java集合类汇总记录--guava篇
来源:互联网 发布:淘宝客户资料购买平台 编辑:程序博客网 时间:2024/05/29 03:24
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篇
- Java集合类汇总记录--JDK篇
- Java集合类汇总记录-- apache.commons4(TreeList)
- Java集合类汇总
- Java 集合类汇总
- JAVA集合类汇总
- JAVA-集合类汇总
- Java集合类汇总
- JAVA集合类汇总
- JAVA集合类汇总
- JAVA集合类汇总
- JAVA集合类汇总
- JAVA集合类汇总
- JAVA集合类汇总
- Java集合类汇总
- JAVA集合类汇总
- JAVA集合类汇总
- JAVA集合类汇总
- JSP中<base href="<%=basePath%>">作用
- 深入理解JavaScript系列 ----(14):作用域链(Scope Chain)
- 理解Fragment的生命周期(2)
- apue.h头文件
- 【算法题集锦之二】--多个集合求交集
- Java集合类汇总记录--guava篇
- Nginx配置proxy_pass
- Android环境搭建
- json
- wax lua 脚本升级练习(1)
- [leetcode] Distinct Subsequences
- erlang 小程序:整数序列,搜索和为正的最长子序列
- java nio http服务器(3)简单的Servlet容器
- 【转】jQuery选择器中含有空格的注意事项