栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java面试题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java面试题

1、HashMap的原理

数组:存储区间连续,占用内存严重,寻址容易,插入删除困难;
链表:存储区间离散,占用内存比较宽松,寻址困难,插入删除容易;
Hashmap综合应用了这两种数据结构,实现了寻址容易,插入删除也容易。

HashMap的工作原理 :HashMap是基于散列法(又称哈希法)的原理,使用put(key, value)存储对象到HashMap中,使用get(key)从HashMap中获取对象。

当我们给put()方法传递键和值时,根据键值key计算hash值得到插入的数组索引,用key遍历数组索引位置链表,如果key不存在,将节点添加到链表的末尾;如果key存在,这个节点的value将被新的值覆盖。

当我们用get(key)方法从HashMap中获取对象时,根据键值key计算hash值得到插入的数组索引,然后用key遍历数组索引位置链表,比较链表节点的内部元素是否与key相等,若都不相等,返回null。相等,则取出相等记录的value。

2、HashMap可以在并发环境使用吗?

不可以。HashMap在超过预定容量时,会触发扩容和rehash操作,会造成循环引用。

3、HashMap中的key可以为null吗?

HashMap允许null键和null值,但必须保证键的唯一性。null key总是存放在Entry[]数组的第一个元素。

4、HashMap中Object可以作为key吗?

可以,但是必须要重写hashcode()和equals()这两个方法。

如果不重写这两个方法会怎么样呢?假设我们创建了这个对象的两个实例,分别为obj1和obj2。obj1和obj2是完全一样的,因为他们的所有的属性都是相同的。

但是在使用HashMap的put()方法时,obj1和obj2还是会被放入不同的桶中。因为Object类中存在hashcode()和equals()两个方法,hashcode默认情况下和内存中的地址相关。因此obj1和obj2在调用hashcode()方法的时候会生成不同的哈希值。同时equals也要进行重写,来定义两个对象在什么情况下视作相等。
 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/307091.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号