面试

2020-04-04  本文已影响0人  Alan_a731

1.重写equals()为什么必须重写hashcode()方法

相等的对象必须拥有相等的hash code。所以我们得到一个结论:如果一个类重写了equals方法但是没有重写hashCode方法,那么该类无法结合所有基于散列的集合(HashMap,HashSet)一起正常运作。

2.hashcode()和equals()区别

3.HashMap底层实现原理

HashMap基于散列原理。通过put()和get()方法储存和获取对象。当将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到桶位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在每个链表节点中储存键值对对象。

4.HashMap和Hashtable的区别

HashMap和Hashtable都实现了Map接口,主要的区别有:线程安全性,同步(synchronization),以及速度。

4.1 HashMap是非synchronized的,并可以接受null key和null值,而Hashtable则不行。

4.2 Hashtable是线程安全的

4.3HashMap的迭代器是fail-fast迭代器,而Hashtable的enumerator迭代器不是。

5.什么是HashSet

上一篇 下一篇

猜你喜欢

热点阅读