HashMap,LinkedHashMap,TreeMap的有序性
来源:互联网 发布:淘宝客api 查询优惠券 编辑:程序博客网 时间:2024/05/18 20:12
HashMap 是将 Key 做 Hash 算法,然后将 Hash 值映射到内存地址,直接取得 Key 所对应的数据。在 HashMap 中,底层数据结构使用的是数组,所谓的内存地址即数组的下标索引。HashMap 的高性能需要保证以下几点:
- Hash 算法必须是高效的;
- Hash 值到内存地址 (数组索引) 的算法是快速的;
- 根据内存地址 (数组索引) 可以直接取得对应的值。
HashMap 实际上是一个链表的数组。基于 HashMap 的链表方式实现机制,只要 HashCode() 和 Hash() 方法实现得足够好,能够尽可能地减少冲突的产生,那么对 HashMap 的操作几乎等价于对数组的随机访问操作,具有很好的性能。但是,如果 HashCode() 或者 Hash() 方法实现较差,在大量冲突产生的情况下,HashMap 事实上就退化为几个链表,对 HashMap 的操作等价于遍历链表,此时性能很差。
HashMap 的一个功能缺点是它的无序性,被存入到 HashMap 中的元素,在遍历 HashMap 时,其输出是无序的。如果希望元素保持输入的顺序,可以使用 LinkedHashMap 替代。
LinkedHashMap 继承自 HashMap,具有高效性,同时在 HashMap 的基础上,又在内部增加了一个链表,用以存放元素的顺序。
HashMap 通过 hash 算法可以最快速地进行 Put() 和 Get() 操作。TreeMap 则提供了一种完全不同的 Map 实现。从功能上讲,TreeMap 有着比 HashMap 更为强大的功能,它实现了 SortedMap 接口,这意味着它可以对元素进行排序。TreeMap 的性能略微低于 HashMap。如果在开发中需要对元素进行排序,那么使用 HashMap 便无法实现这种功能,使用 TreeMap 的迭代输出将会以元素顺序进行。LinkedHashMap 是基于元素进入集合的顺序或者被访问的先后顺序排序,TreeMap 则是基于元素的固有顺序 (由 Comparator 或者 Comparable 确定)。
LinkedHashMap 是根据元素增加或者访问的先后顺序进行排序,而 TreeMap 则根据元素的 Key 进行排序。
- HashMap,LinkedHashMap,TreeMap的有序性
- HashMap,LinkedHashMap,TreeMap的有序性
- HashMap,LinkedHashMap,TreeMap的有序性
- HashMap,LinkedHashMap,TreeMap的有序性
- HashMap,LinkedHashMap,TreeMap的有序性
- HashMap,LinkedHashMap,TreeMap的区别
- HashMap LinkedHashMap TreeMap 的区别
- HashMap,LinkedHashMap,TreeMap的区别
- HashMap,LinkedHashMap,TreeMap的区别
- HashMap,LinkedHashMap,TreeMap的区别
- HashMap,LinkedHashMap,TreeMap的区别
- HashMap,LinkedHashMap,TreeMap的区别
- HashMap,LinkedHashMap,TreeMap的区别
- HashMap,LinkedHashMap,TreeMap的区别
- HashMap,LinkedHashMap,TreeMap的区别
- HashMap,LinkedHashMap,TreeMap的区别
- HashMap,LinkedHashMap,TreeMap的区别
- HashMap,LinkedHashMap,TreeMap的区别
- JZOJ 5485. 【清华集训2017模拟11.26】字符串
- qt常见快捷键
- CSS层叠上下文以及z-index
- iOS 从一个APP跳转到另一个APP,并带参数跳到指定页面
- 鼠标悬停旋转的图标按钮特效(纯CSS)
- HashMap,LinkedHashMap,TreeMap的有序性
- Idea下kotlin的抽象类和继承,多态
- nginx 通过User-Agent匹配规则进行过滤
- IDEA上传项目到SVN
- 开关滑动
- 第二届全国智能制造创新创业大赛生物医药专项赛决赛
- 连接数据库时出现的乱码问题
- C#开发中遇见的问题
- 程序员网站推荐