比较:TreeMap、HashMap、LinkedHashMap、HashTable

HashMap

  • 内部结构是一个数组,线性顺序存储,二次结构使用线性的单链表
  • 据键可以直 接获取它的值,具有很快的访问速度
  • 不支持线程的同步,即任 一 时刻可以有多个线程同时写HashMap;可能会导致数据的不一致
  • 允许一个空键值
  • Map interface的一个实 现
  • 首先通过类本身的hashcode得到hash值 ,然后再通过hash()方法得到新的hash函数,防止碰撞

HashTable

  • 采用hash法进行索引
  • 不允许空键值
  • 继承自Dictionary
  • 方法是线程安全的
  • 直接使用对象的hashCode

TreeMap

  • 内部结构是一棵红黑树(又叫排序数,是二叉树的一种),使用链式存储,可以指定比较器Comparator,key需实现Comparable接口
  • key值不能是null
  • 实现SortMap接口,把保存的记录根据键排序

LinkedHashMap

  • HashMap的子类
  • 内部结构是一个数组,线性顺序存储,二次结构使用线性的单链表,但同时内部维护了一个双向循环链表,可以保持记录的插入顺序、或者访问顺序(将get方法访问的元素移至链表尾部)
  • 实现LRU算法的缓存容器,当然要指定淘汰时的使用频率和容量上限 LRU是Least Recently Used 近期最少使用算法。