什么是hash?
hash 散列函数,把任意长度的输入输出成固定长度的输出。输出的值就是散列值,也就是hashcode。
这种转换是一种压缩映射,散列值的空间远小于输入值的空间。不同的输入可能会产生相同的输出。所以不可能通过散列值来确定唯一的输入值。
使用hash算法可以提高存储空间利用率,可以提高数据的查询效率。
什么是hashcode?
通过hash算法得出的散列值就是hashcode。
hashCode 的作用是什么?
- hashCode 的存在主要是用于查找的快捷性,如 Hashtable,HashMap 等, hashCode 是用来在散列存储结构中确定对象的存储地址的;
- 如果两个对象相同,就是适用于 equals(java.lang.Object) 方法,那么这两 个对象的 hashCode 一定要相同;
- 如果对象的 equals 方法被重写,那么对象的 hashCode 也尽量重写,并且产 生 hashCode 使用的对象,一定要和 equals 方法中使用的一致,否则就会违 反上面提到的第 2 点;
- 两个对象的 hashCode 相同,并不一定表示两个对象就相同,也就是不一定适 用于 equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结 构中.
hashcode与java对象的关系?
每个java对象的组成都是有三部分组成的。对象头;实例数据;对齐填充字节
其中对象头包含3个部分:Mark Word;指向类的指针;数组长度(如果当前对象不是数组则没有此部分
日常编程中的使用
equals方法
hashmap的使用,hash计算索引下标。
mysql中的hash索引
面试题
hashmap中是如何解决hash冲突的呢?