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

最新文章

  1. BZOJ 3489: A simple rmq problem
  2. SEO
  3. PHP中使用redis执行lua脚本示例
  4. 受限玻尔兹曼机(RBM)学习笔记(八)RBM 的评估
  5. POSIX线程--同时执行
  6. 利用Bundle在activity之间传递对象
  7. C语言——内存分配
  8. 在IT学习中的“认识论”
  9. [置顶] 【cocos2d-x入门实战】微信飞机大战之三:飞机要起飞了
  10. CenOS下安装Eclipse并配置PyDev
  11. mongodb 数据库导入.cvs文件时某些字段类型变成NumberLong的解决办法
  12. springMVC两种方式实现多文件上传及效率比较
  13. Eclipse连接SQL Server 2008数据库 以及问题总结
  14. JavaWeb(一)Servlet中乱码解决与转发和重定向的区别
  15. Sequelize 基本操作
  16. Git操作中crlf和lf冲突问题
  17. 解决安装fiddler后IE打开网页提示“代理服务器无响应”
  18. ERP,ARP瘦身并如何删除。
  19. could not connect to server: Connection refused (0x0000274D/10061)
  20. shiro用authc配置后登录成功后不能跳转到index页面

热门文章

  1. 简单入门构建spark1.6.1源码环境
  2. JS——for
  3. POJ_3279_(dfs)(状态)
  4. vi 命令学习(三)
  5. 本地读取服务器Xml文件及本地读本地的xml
  6. Centos 7中,防火墙配置端口规则
  7. Django REST framework - 权限和限制
  8. Codeforces 939D - Love Rescue
  9. js 保留几位小数位数
  10. js调用ro的webservice