Java中的Set与hashCode

Linux大全评论354 views阅读模式

我们知道Java中的Collection分为List和Set。List中的元素是有序和可重复的,而Set中的元素无序且不可重复。

由于Set中的元素是不可重复的,在每次向一个Set中插入新的元素时,如果没有hashCode,就需要遍历整个集合检查是否已经存在该元素。这样会使Set的效率非常低下。

使用哈希算法可以提高从元素集合中查找一个元素的效率。根据集合元素的hashCode来将元素划分成几组,每一组对应一块存储区域。根据元素的hashCode可以找到该元素的存储区域。

首先我们必须保证如果两个元素相同(equals),它们的hashCode必定相同。

向一个Set集合插入新元素时,要通过元素的hashCode来确定这个元素存放的位置。如果这个位置上没有元素,就直接存储在这个位置上,否则就散列到其他地址。

因此在插入新元素时,我们只需与根据hashCode找到的存储区域中的元素进行对比。这样提高了Set插入元素的效率。

我们在重写对象的equals方法时,必须重写hashCode。

企鹅博客
  • 本文由 发表于 2020年6月9日 01:44:41
  • 转载请务必保留本文链接:https://www.qieseo.com/176420.html

发表评论