9.HashMap基本的使用

一.HashMap体系介绍:

HashMap集合是Map集合中最为常用的一个集合。


二.HashMap集合的特点:

  • 第三条特点中"无序、不重复、无索引"仅针对键,和值无关,"无序"就是存和取的顺序有可能不一样,"不重复"表示键不能重复,"无索引"表示不能通过索引来获取集合中的元素


三.HashMap集合底层原理:哈希表

1.哈希表底层原理:

2.注意:

  • 哈希表是由顺序表和链表组合而成,顺序表中的元素就是链表

  • 当底层创建了一个HashMap集合的对象后,在底层就会创建一个长度为16,默认加载因子为0.75的线性表,再利用put方法就可以添加数据->put方法的底层首先会创建一个Entry对象,Entry对象记录的就是要添加的键和值,然后会利用键来计算出键的哈希值(只要键的哈希值即可),然后再计算出在线性表中应该存入的位置,如果此时要添加的位置的值为null,则会直接添加:

  • 但如果此时要添加的位置不为null,此时就会调用equals方法来比较键的属性值(注:只比较键的属性值即可),如果比较后键的内容一样,那么就会覆盖原有的Entry对象,而不是挂在下面:

  • 但如果此时要添加的位置不为null,此时就会调用equals方法来比较键的属性值(注:只比较键的属性值即可),如果比较后键的内容不一样,就会添加新的Entry对象-> JDK8以前新元素会添加到线性表当中,原有的会挂在下面形成链表->但从JDK8开始,新的元素会直接挂在已有的元素的下面形成链表,而且为了提高性能, 当链表的长度超过8且线性表长度大于等于64时,链表自动转换为红黑树:


四.HashMap总结:

  • HashMap集合中,如果键存储的是字符串型和基本数据类型如整型,那么不重写hashCode方法和equals方法也能保证键的唯一性

  • HashMap集合中,如果键存储的是引用数据类型如学生类型,那么必须重写hashCode方法和equals方法才能保证键的唯一性,否则无法实现键的唯一性

  • HashMap集合中,无法保证值的唯一性


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值