Java集合(五) Set 添加元素

Java中Set集合是如何实现添加元素保证不重复的?

  Set集合是一个无序的不可以重复的集合。今天来看一下为什么不可以重复。

  Set是一个接口,最常用的实现类就是HashSet,以HashSet为例。

  HashSet类实现了Set接口, 其底层其实是包装了一个HashMap去实现的。HashSet采用HashCode算法来存取集合中的元素,因此具有比较好的读取和查找性能。

HashSet 添加元素过程

  向 HashSet 添加元素,首先调用元素所在类的 hashCode() 方法,计算元素的哈希值,算出在 hashset 底层数组的存放位置。

  判断数组该位置上是否已经有元素。

    如果该位置没有其他元素,则元素添加成功。

    如果该位置,有其他元素,则比较两个元素的 hash 值是否相同;

        如果 hash值不相同,则元素添加成功, 以链表的形式存储;

        如果 hash值相同,再用 该类的equal() 方法比较

          equal  返回 true, 元素添加失败,替换了该元素

          equal 返回false 元素添加成功, 并以链表的节点形式存储

  更详细看:https://www.cnblogs.com/wupeixuan/p/8858816.html

【1】:https://www.cnblogs.com/wupeixuan/p/8858816.html

原文地址:https://www.cnblogs.com/Jomini/p/13960570.html