Java-初探HashSet

1.HashSet

1.1 HashSet的底层数据结构

  • HashSet的底层是使用哈希表的存储机制

1.2 HashSet的结构描述

HashSet底层是一个哈希表,而哈希表顾名思义就是一个表格,里面的每一个单元格都是一个桶式结构,存放的数据没有顺序可言,且存放的数据的数量也没有明确的限制。每一个单元格都有一个唯一的位置索引,但是需要通过计算来得到数据所应该存储的位置。这里需要通过hashSet()方法,得到每个对象的哈希值,并且按照哈希表的存储原理,从而计算得出当前元素保存的位置在哪一个单元格。

1.3 存储流程

在这里插入图片描述

  1. 首先会调用对象的hashCode()方法获取要存储的对象的哈希值。
  2. 通过哈希值的计算得出该元素在哈希表中存储所对应的单元格。
  3. 因为在哈希表中的每一个单元格都是一个桶式结构,存放的数据没有明确的数量限制,所以需要判断该单元格内是否还有其它的元素存在,若没有其他的元素存在,则可以直接存储在该单元格内。
  4. 若该单元格内有其他的元素已经存在,则需要跟当前单元格内的所以元素进行比较,首先比较各自的哈希值是否相同,若都不相同,则直接存放在该单元格内。
  5. 若单元格内有其他元素的哈希值与其相同,则会调用equals()方法比较对象内容是否相等,若对象内容不相等,则可以直接存放。
  6. 若equals()方法比较对象内容相等,说明元素已经重复,不会存储到哈希表中,返回一个false。
发布了5 篇原创文章 · 获赞 5 · 访问量 209

猜你喜欢

转载自blog.csdn.net/cccccv_/article/details/104486804