面经:)

来源:互联网 发布:淘宝有多少个商品种类 编辑:程序博客网 时间:2024/06/03 08:27
    -

面经

- HashCode与equals的区别与联系
- 在没有覆盖过equals过的情况下,使用equals方法都是调用Object类的equals方法。而equals方法主要是用于判断对象的引用地址是否是同一个地址。
- HashCode在计算时与对象的属性有关,因此在计算HashCode之后对象的属性不能随意更改。而且HashCode只在集合中使用。
- 将对象放入集合时,首先先判断要放入的对象的HashCode值是否与集合中的任意一个元素的HashCode值相等,如果不相等直接放入集合中,如果相等,则通过equals方法来判断要放入的对象与集合中的对象是否相等,如果相等则不放入,否则放入集合。
- HashMap的底层实现
- HasMap实际是一种“”数组散列“”,即“”数组+链表“”。
- HashMap底层实际是一个数组,数组中的每一项又是一个链表。
- 每个MapEntry其实就是一个key+value,除此之外,还持有一个指向下一个元素的引用,“”key+value“”+Entry

 public Entry<K,V> implement Map.Entry<K,V>{    final K key;    V value;    Entry<K,V> next;    final int hash;}

Hashput允许放空键和空值为null;
调用 indexFor(int h, int length) 方法来计算该对象应该保存在 table 数组的哪个索引处,通过h&table.length-1而HashMap底层数组的长度总是 2 的 n 次方,这是HashMap在速度上的优化。

原创粉丝点击