【散列表】为每个对象计算一个整数,称为散列码(是由对象的实例域产生的一个整数)更确切的说
* 不同实例域的对象产生不同的散列码
*
* 如果自定义类,就要负责实现这个类的hashcode,注意:自己实现的hashcode方法应该与equals方法兼容
* 即如果a.equals(b) 为true a和b必须具有相同的散列码
*
* 在java中,【散列表】用链表数组实现。每个列表被称为桶。想要查找表中对象,先计算散列码,然后与桶的总数取余
* 所的余数就是桶的索引。当桶中没有其他元素时,很幸运可以放入,而桶里面如果已经满了,先将新对象与桶内进行比较
* 查看是否存在。
*
* 标准类库中的桶数是2的幂次,默认为16;如果散列表太满就需要再散列(rehashed)会创建出一个桶数更多的表,并将所有元素
* 插入到这个新表中,然后丢弃原来的表。
* 装填因子就是决定了何时对散列表进行再散列。一般默认0.75
*
*
* 散列表可以实现几个重要的数据结构,其最简单的就是【Set】
*
* set的add会现在集中查找要添加的对象,如果不存在,就将对象添加进去
*
时间: 2024-11-03 21:32:39