Java中Map、HashMap、LinkedHashMap、TreeMap的区别

Map:

  Map是一个接口不能实例化,Map接口主要有两个实现类:HashMap和TreeMap类。其中,HashMap类按哈希算法来存取对象,而TreeMap类可以对键对象进行排序;

  Map提供了一种映射关系,其中的元素是已键值对(key-value)的形式存储,能够实现根据key快速查找value;

  Map中的键值对以Entry类型的对象实例形式存在;

  键(key值)不可以重复,value值可以;

 

HashMap:

  HashMap是Map的一个重要的实现类,基于哈希表实现;

  HashMap中的Entry对象是无序排列的;

  Key和Value值都可以为null,但是一个HashMap只能有一个Key值为null的映射(Key不可以重复);

 

LinkedHashMap:

  LinkedHashMap内部有一个链表,保持Key插入的顺序。迭代的时候也时候按照插入的顺序迭代,而且迭代的时候比HashMap快;

  LinkedHashMap拥有HashMap的所有特性,比HashMap多维护一个双向链表,因此可以按照插入的顺序从头部或者尾部迭代(是有序的),但是对内存的开销也要比HashMap大、性能也要差一些;

  

TreeMap:

  TreeMap的底层是通过红黑数实现的;没有调优选项,所以该树处于平衡状态;它的 containsKey , get , put and remove 方法的时间复杂度是 log(n) ,并且它是按照 key 的自然顺序(或者指定排序)排列,与 LinkedHashMap 不同, LinkedHashMap 保证了元素是按照插入的顺序排列。

 

posted @ 2020-01-13 21:44  阿 飞  阅读(612)  评论(0编辑  收藏  举报