集合-set系列集合

系列文章目录

1.集合-Collection-CSDN博客​​​​​​

2.集合-List集合-CSDN博客

3.集合-ArrayList源码分析(面试)_喜欢吃animal milk的博客-CSDN博客

4.数据结构-哈希表_喜欢吃animal milk的博客-CSDN博客

5.集合-set系列集合-CSDN博客

6.集合-Map系列-CSDN博客


文章目录

目录

系列文章目录

文章目录

前言

一 . 什么是set?

二 . HashSet 

三 . LikedHashSet

四 . TreeSet

总结


前言

大家好,今天给大家讲一下set系列集合的相关知识


一 . 什么是set?

在 Java 中,Set 是一种集合类型,它是一个不允许包含重复元素的集合。Set 接口继承自 Collection 接口,定义了一些用于操作和管理集合的方法。

继承体系:

集合-set系列集合_第1张图片

Set 的特点如下:

  1. 不允许重复元素:Set 中的元素是唯一的,不会包含重复的元素。当向 Set 中添加重复元素时,添加操作会被忽略。

  2. 无序性:Set 中的元素没有固定的顺序,不会按照元素的插入顺序或者排序顺序进行存储。因此,不能通过索引来访问 Set 中的元素。

  3. 无索引: 没有带索引的方法,所以无法使用普通for循环遍历,也不能通过索引来获取元素

常见的 Set 实现类有 HashSet、LinkedHashSet 和 TreeSet。

  • HashSet:HashSet 使用哈希表来存储元素,具有较好的插入和查找性能。由于哈希表的特性,HashSet 中的元素是无序的。

  • LinkedHashSet:LinkedHashSet 在 HashSet 的基础上,使用链表维护元素的插入顺序,因此可以保持元素的插入顺序。

  • TreeSet:TreeSet 使用红黑树(一种自平衡的二叉查找树)来存储元素,并且可以保持元素的排序顺序。

Set 接口定义了一系列方法,如添加元素、删除元素、判断元素是否存在等。常见的方法有:

  • add(E e):向 Set 中添加元素。
  • remove(Object o):从 Set 中删除指定的元素。
  • contains(Object o):判断 Set 中是否包含指定的元素。
  • size():返回 Set 中元素的数量。
  • isEmpty():判断 Set 是否为空。

通过使用 Set,可以方便地管理和操作不允许包含重复元素的集合。


二 . HashSet 

HashSet 是 Java 中的一种 Set 接口的实现类,它使用哈希表来存储元素,具有以下特点:

  1. 不允许重复元素:HashSet 中的元素是唯一的,不会包含重复的元素。当向 HashSet 中添加重复元素时,添加操作会被忽略。

  2. 无序性:HashSet 中的元素没有固定的顺序,不会按照元素的插入顺序或者排序顺序进行存储。因此,不能通过索引来访问 HashSet 中的元素。

  3. 元素的判定:HashSet 使用元素的 equals() 方法和 hashCode() 方法来判断元素是否重复。因此,添加到 HashSet 中的元素必须正确实现 equals() 方法和 hashCode() 方法。

  4. 无索引: 没有带索引的方法,所以无法使用普通for循环遍历,也不能通过索引来获取元素

HashSet 在实际应用中常用于去重的操作,可以快速判断一个元素是否已经存在于集合中,并且可以高效地添加和删除元素。由于 HashSet 使用哈希表来存储元素,所以它的插入和查找操作的时间复杂度都是 O(1)。

数组+链表

集合-set系列集合_第2张图片

 数组+链表+红黑树

集合-set系列集合_第3张图片

 集合-set系列集合_第4张图片


三 . LikedHashSet

在LikedHashSet中,元素的存储是无序的,不允许有重复元素。它的底层实现是一个哈希表,通过哈希函数将元素映射到哈希表的位置上。当插入或删除元素时,LikedHashSet会调用哈希函数来确定元素的位置,并在该位置上进行操作。

LikedHashSet的优点是在插入、删除和查找元素时具有较高的效率。由于使用了哈希表,元素的插入和删除操作的平均时间复杂度是O(1),查找操作的平均时间复杂度也是O(1)。但是,由于哈希表的大小是有限的,当元素的数量较多时,可能会导致哈希冲突,影响操作的效率。

集合-set系列集合_第5张图片

应用场景: 去重且存取有序 


四 . TreeSet

TreeSet是Java中的一个有序集合数据结构,它实现了SortedSet接口,并且使用红黑树(Red-Black Tree)作为底层数据结构来存储元素。

与HashSet和LinkedHashSet不同,TreeSet中的元素是有序的。它根据元素的自然顺序或者通过Comparator接口提供的排序规则来对元素进行排序。在TreeSet中,元素默认按照从小到大进行排序,或者可以通过构造函数指定一个Comparator来进行自定义排序。

集合-set系列集合_第6张图片

集合-set系列集合_第7张图片


总结

这篇博客主要讲解了set系列的集合的相关内容,大家多多支持,我们下一篇博客见

你可能感兴趣的:(数据结构与算法,数据结构)