【Java】集合类 - Set 接口

Posted by 西维蜀黍 on 2019-03-15, Last Modified on 2023-02-28

Set接口

Set接口继承于Collection接口,是一个不允许出现重复元素,并且无序的集合,主要有HashSet和TreeSet两大实现类。

在判断重复元素的时候,Set集合会调用hashCode()和equal()方法来实现。

主要实现类

  • HashSet:底层数据结构是哈希表(hash table),主要利用HashMap的key来存储元素,计算插入元素的hashCode来获取元素在集合中的位置,;
  • TreeSet:底层数据结构为红黑树结构,每一个元素都是树中的一个节点,插入的元素都会进行排序;
  • LinkedHashSet:不允许重复的元素,底层数据结构为哈希表(hash table)+双链表,其中由链表保证元素的排序, 由哈希表证元素的唯一性

HashSet

Refer to https://swsmile.info/post/java-hashset/

TreeSet

Refer to https://swsmile.info/post/java-treeset/

LinkedHashSet

具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历LinkedHashSet时,结果会按元素插入的次序显示。