所有分类
  • 所有分类
  • 未分类

HashMap,TreeMap,LinkedHashMap的区别

简介

本文介绍Java的HashMap、TreeMap、LinkedHashMap之间的区别。

相同点

  • 都属于Map;
    • Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。
  • 都是线程不安全的

不同点

HashMapTreeMapLinkedHashMap
按插入顺序存放不支持不支持。支持。 遍历时,按插入的顺序出结果。
按key排序不支持。 按照hashCode进行输出。支持。 默认按key升序排序。可用Comparator自定义排序。 用Iterator 遍历TreeMap时,结果是排过序的。不支持。
数据结构数组 + 链表 + 红黑树 (put和get操作,基本可以达到常数时间的性能)红黑树。 (get或put操作的时间复杂度是O(log(n)))HashMap + 双向链表 此类是HashMap的子类。
nullkey和value均允许为null。 只允许一条记录的key值为null(多条会覆盖); 允许多条记录的Value为 null。不允许key的值为nullkey和value均允许为null。 只允许一条记录的key值为null(多条会覆盖); 允许多条记录的Value为 null。
  • HashMap 、LinkedHashMap 的 key 和 value 都允许为 null。
  • ConcurrentHashMap、ConcurrentSkipListMap、Hashtable 的 key 和 value 都不允许为 null。

17

评论1

请先

  1. Hashtable.keySet()-降序;TreeMap.keySet()-升序;HashMap.keySet()-乱序;LinkedHashMap.keySet() 原序
    华山栈道008 2023-12-13 0
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录