HashMap学习

本文主要探讨了HashMap在Java中的应用,强调了其适合单线程环境和对键的hashCode()和equals()方法的要求。同时,对比了HashMap与其他Map实现,如TreeMap,解释了它们的实现原理和适用场景。此外,提到了Map接口、AbstractMap和SortedMap的作用,以及HashMap、HashTable、TreeMap和WeakHashMap的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  最近在敲Java代码的时候,发现小咸儿对于HashMap的使用不是很熟悉啊!

情景

  推荐的情景:

     推荐的HashMap应用场景是单线程运行环境,并且不需要遍历操作的场景。

  其他的情景:

     多线操作HashMap,我们通过加锁或者加入同步控制依然能正常应用HashMap,只是需要加上同步操作的代价。

内容

  HashMap(键值对):基于哈希表实现,使用HashMap要求添加的键明确定义了hasCode()和equals(),为了优化hashMap空间的使用,可以调优初始容量和负载因子。hashmap适用于在map中插入,删除和定位元素。hashmap的结果是没有排序的的。

  TreeMap:基于红黑树实现,TreeMap没有调优选项,该树总是处于平衡状态。treemap适用于按自然顺序或自定义顺序遍历键(key),TreeMap实现SortMap接口,能够把保存的额近路根据键排序,默认是按键值的升序排序,也可以指定排序的比较器。

参考链接:红黑树之原理和算法详细介绍

概括

  1、Map是“键值对”映射的抽象接口

  2、AbstractMap实现了Map中的绝大部分函数接口。他减少了“Map的实现类”的重复编码

  3、SortedMap有序的“键值对”映射接口

  4、NavigableMap是继承于SortedMap的,支持导航函数的接口

  5、HashMap、HashTable、TreeMap、WeakHashMap这4个类是“键值对”映射的实现类,但是它们各有区别。

    a.HashMap是基于“拉链法”实现的散列表。一般用于单线程程序中。

    b.HashTable也是基于“拉链法”实现的散列表。一般用于多线程程序中。

    c.WeakHashMap也是基于“拉链法”实现的散列表,它一般也用于单线程程序中。相比HashMap,WeakHashMap中的键是“弱键”,当“弱键”被GC回收时,它对应的键值对也会被从WeakHashMap中删除。而HashMap中的是强键。

    d.TreeMap是有序的散列表,它是通过红黑树实现的。它一般用于单线程中存储有序的映射。

参考链接:Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)

结语

  其他的随着小咸儿学习的深入,在进行全面的总结。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值