一、从集合和数据结构说起
这几天在博客上看关于为什么重写equals方法的同时也要重写hashcode方法,越看越糊涂,后来自己仔细一想,本来很简单的事情为何说的那么麻烦。现在我来一一说说我的理解。
在数据结构中我们学习过查找,但是实践的比较少。而java集合正是利用了这个查找。
什么是查找?就是给你1个值在成千上万的记录中找到他。
主要有两种查找:顺序查找和hash查找。
顺序查找:从头到尾一个一个找呗(java list,包括linkedlist和arraylist, 就是采用这个设计,既然查找总得比较吧,比较你两个key相不相等,所以equals方法就产生了)。
hash查找:先计算hash值(hashcode方法产生)找到地址,再进行比较(equals方法就产生了),如果不相等就进行冲突处理。由于java采用链地址冲突处理,所以从单链表不断比较,直到查到为止。
二、hash查找
简单介绍一下hash查找。