java为数据结构中的映射定义了一个接口java.util.Map;
它有四个实现类,分别是HashMapHashtableLinkedHashMapTreeMap

可能很多人只使用过HashMap,但还是那句话,你可以不用,但你不能不懂。如果你也是这样,恭喜你发现了宝藏。

首先是这个原始天尊-Map

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。

1. 大徒弟HashMap

Hashmap是一个最常用的Map,它根据键的HashCode值存储数据根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最 多只允许一条记录的键为Null;允许多条记录的值为Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。

2. 守边疆的Hashtable(只忠心一主,线程安全)

Hashtable与HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtable在写 入时会比较慢。

3. 循规蹈矩的LinkedHashMap

LinkedHashMap是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历

LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量 很大,实际数据较少时,遍历起来可能会比LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。

4. 爱算账的TreeMap

TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。

在整个M国,四位徒弟分管不同部门,各司其职,各有优缺

一般情况下, 我们用的最多的是HashMap,在Map中插入、删除和定位元素,HashMap是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会 更好。如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现,它还可以按读取顺序来排列。

HashMap是一个 最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条 记录的键为NULL,允许多条记录的值为NULL。

HashMap不支持线程同步,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致性。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。


Hashtable与HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtable在写入时会比较慢。


LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。


在遍历的时候会比HashMap慢TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器。当用lterator遍历TreeMap时,得到的记录是排过序的。

Map的分类和不同的应用场景相关推荐

  1. webworker应用场景_JavaScript 工作原理之七-Web Workers 分类及 5 个使用场景

    Web Workers 分类及 5 个使用场景 这是 JavaScript 工作原理的第七章. 本系列持续更新中,Github 地址请查阅这里. 现在,我们将会剖析 Web Workers:我们将会综 ...

  2. Java中List,Set和Map详解及其区别和使用场景(转)

    Java中的集合包括三大类,它们是Set(集).List(列表)和Map(映射),它们都处于java.util包中,Set.List和Map都是接口,它们有各自的实现类.Set的实现类主要有HashS ...

  3. map和foreach的区别和应用场景_支付宝小程序和微信小程序,两者有何区别?

    原标题:支付宝小程序和微信小程序,两者有何区别? 自2017年1月微信推出小程序之后,小程序的发展势头便愈来愈猛.作为腾讯老对头的阿里,也开始投入小程序的研发.在一年多的开放公测后,支付宝小程序终于于 ...

  4. map和foreach的区别和应用场景_浅析项目中常用的 VO、DTO、DO、PO的概念、区别和用处...

    概念: 模型: VO与DTO的区别 VO与DTO的应用 DTO与DO的区别 DTO与DO的应用 DO与PO的区别 DO与PO的应用 本篇文章主要讨论一下我们经常会用到的一些对象:VO.DTO.DO和P ...

  5. map和foreach的区别和应用场景_说说session和cookie区别与主要应用场景,localStorage的特点...

    session和cookie区别 1.session保存在服务器,cookie保存在客户端 2.session中保存的时对象,cookie保存的是字符串 3.session不能区分路径,同一个用户访问 ...

  6. 《智能控制技术》学习笔记-1.绪论,智能控制定义、分类、发展及应用场景

    一.引言 先修内容: 经典控制理论.现代控制理论.MATLAB 引入:智能理论是新兴学科,随着数字计算机和人工智能发展而来,发展得益于许多学科:人工智能.认知科学.现代自适应控制.最优控制.神经元网络 ...

  7. Formal Verification (一) 形式验证的分类、发展、适用场景

    资料分享:百度网盘 提取码:csdn Definition Formal Verification:利用数学分析的方法,通过算法引擎建立模型,对待测设计的状态空间进行穷尽分析的验证. Kinds of ...

  8. 电容的结构分类介质封装及应用场景总结

      

  9. 场景理解--场景分类

    场景分类是遥感图像处理的一个重要环节,也是遥感研究领域的热点.随着卫星遥感图像和航空遥感图像分辨率不断提高,可以从遥感图像中获得更多有用的数据和信息.而针对不同场合的应用,对遥感图像的处理也有着不同的 ...

最新文章

  1. python页面调用接口_python调用接口——requests模块
  2. 关于收到部分还款SAP系统两种处理方法的说明和比较
  3. ABAP:List中回写CheckBox的值到内表
  4. 张志华教授《机器学习导论》和《统计机器学习》课程讲义
  5. SalesArea F4 help implementation
  6. c调用python第三方库_用 Python ctypes 来调用 C/C++ 编写的第三方库
  7. python中exit的作用_python __enter__ 与 __exit__的作用,以及与 with 语句的关系
  8. 行列式、LGV、矩阵树学习笔记
  9. Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7:1.3.21
  10. LC3无重复最长字串
  11. 无人驾驶的分级以及产品化后会带来的改善
  12. matlab计算积和式,定积分计算方法总结
  13. 计算机需要无线网卡进行网络连,无线网卡
  14. 基于FlexRay总线的汽车冗余线控转向系统的可靠性(FEMA)分析
  15. windows 文件后缀名
  16. 微信公众号开发之微信支付开发
  17. 内外盘期货分仓系统,仿真模拟考核系统
  18. 共享单车泡沫破灭,自行车产业链的每个环节都被波及
  19. django 注册登录邮箱验证功能
  20. 基于C++的UKF代码示例,跟踪三次多项式曲线

热门文章

  1. 设置腾讯云linux服务器中 MySQL 允许远程访问
  2. 2022-2028年中国亲子游行业市场分析及前瞻研究报告
  3. linux修改mysql密码sa_如何修改SA口令,数据库SA密码怎么改?
  4. 2022-2028年中国塑料制品行业投资分析及前景预测报告(全卷)
  5. Redis 预防缓存穿透“神器” — 布隆过滤器
  6. python2 安装faiss-gpu 报错 faiss/faiss/python/swigfaiss.i:241: Error: Unable to find ‘faiss/impl/platfo
  7. python中如何对复杂的json数据快速查找key对应的value值(使用JsonSearch包)
  8. java实现将汉语转换为拼音
  9. [Pytorch]基于混和精度的模型加速
  10. Linux实现ffmpeg H.265视频编码