Java集合—Map集合
来源:互联网 发布:笔趣阁软件 编辑:程序博客网 时间:2024/06/02 20:10
Map集合
Map集合:
|--HashMap
底层是哈希表结构
无序
键和值可以为null(注意:最多只允许一条记录的键为null,不允许多条记录的值为null)
线程不安全,效率高
|--LinkedHashMap
底层是链表和哈希表
有序 (根据元素增加或者访问的先后顺序进行排序)
线程不安全
|--Hashtable
底层是哈希表结构
键和值不可以为null。
无序
线程安全,效率低
|--TreeMap
底层是二叉树
有序 (根据元素的 Key 进行排序,基于元素的固有顺序)
线程不安全
平常用的多的是HashMap和LinkedHashMap:
HashMap 是将 Key 做 Hash 算法,然后将 Hash 值映射到内存地址,直接取得 Key 所对应的数据。
在 HashMap 中,底层数据结构使用的是数组,所谓的内存地址即数组的下标索引。
HashMap 的高性能需要保证以下几点:
1.Hash 算法必须是高效的;
2.Hash 值到内存地址(数组索引)的算法是快速的;
3.根据内存地址(数组索引)可以直接取得对应的值。
HashMap 实际上是一个链表的数组。基于 HashMap 的链表方式实现机制,只要 HashCode()和 Hash()方法实现得足够好,能够尽可能地减少冲突的产生,那么对 HashMap 的操作几乎等价于对数组的随机访问操作,具有很好的性能。但是,如果 HashCode()或者 Hash()方法实现较差,在大量冲突产生的情况下,HashMap 事实上就退化为几个链表,对 HashMap 的操作等价于遍历链表,此时性能很差。
HashMap 的一个功能缺点是它的无序性,被存入到 HashMap 中的元素,在遍历 HashMap 时,其输出是无序的。如果希望元素保持输入的顺序,可以使用 LinkedHashMap 替代。
LinkedHashMap
继承自 HashMap,具有高效性。
有序性:在 HashMap 的基础上,在内部增加了一个链表,用以存放元素的顺序。
- Java集合—Map集合
- JAVA集合-Map集合
- java集合------Map集合
- Java集合----Map集合
- java集合(五)——集合 Map
- JAVA----集合类——Map集合
- Java集合框架—Map
- java集合------Map集合总结
- Java集合之-Map集合
- java集合----------Map
- java笔记 Map集合
- java------集合Map
- java遍历Map集合
- java Map集合练习
- java集合(Map)
- java 遍历map集合
- java之Map集合
- Java 集合(Map)
- 学习linux内核(三)
- 炮塔的转向
- Hibernate4.1之persist方法
- 安装Anaconda+Scrapy出现的问题
- LC-3中断实验
- Java集合—Map集合
- 删除Mac中的Windows启动项
- AVC(H.264) FLV 打包
- 栈退出应用程序
- LeetCode hard 45. Jump Game II
- 斐波那契数列
- 图像拼接之转透视矩阵
- 【Tensorflow】辅助工具篇——tensorflow slim(TF-Slim)介绍
- CAS SSO 单点登录 第二篇