3分钟搞掂Set集合
前言 声明,本文用的是jdk1.8 前面章节回顾: Collection总览 List集合就这么简单【源码剖析】 Map集合、散列表、红黑树介绍 HashMap就是这么简单【源码剖析】 LinkedHashMap就这么简单【源码剖析】 TreeMap就这么简单【源码剖析】 ConcurrentHashMap基于JDK1.8源码剖析 现在这篇主要讲Set集合的三个子类: HashSet集合 A:底层数据结构是哈希表(是一个元素为链表的数组) + 红黑树 TreeSet集合 A:底层数据结构是红黑树(是一个自平衡的二叉树) B:保证元素的排序方式 LinkedHashSet集合 A::底层数据结构由哈希表(是一个元素为链表的数组)和双向链表组成。 这篇主要来看看它们比较重要的方法是如何实现的,需要注意些什么,最后比较一下哪个时候用哪个~ 强调: 在学习本文之前,最好是看过Map系列的文章 看这篇文章之前最好是有点数据结构的基础: Java实现单向链表 栈和队列就是这么简单 二叉树就这么简单 当然了,如果讲得有错的地方还请大家多多包涵并不吝在评论去指正~ 一、HashSet剖析 首先,我们来看一下HashSet的继承结构图: 按照惯例,我们来看看HashSet顶部注释: 从顶部注释来看,我们就可以归纳HashSet的要点了: 实现Set接口 不保证迭代顺序 允许元素为null