Javase-set集合

2018-08-05  本文已影响7人  流年划破容颜_cc55

参考原文地址
现在这篇主要讲Set集合的三个子类:

强调:在学习本文之前,最好是看过Map系列的文章

一、HashSet剖析

首先,我们来看一下HashSet的继承结构图:

image.png

按照惯例,我们来看看HashSet顶部注释:

image.png

从顶部注释来看,我们就可以归纳HashSet的要点了:

我本来也是想在写完List集合就转到Set集合的了,可是:看到底层实际上是一个HashMap实例时,我就去学习Map集合先了~

顶部注释说底层实际上是一个HashMap实例,那证据呢?

image.png

我们再来看一下HashSet整个类的方法和属性:

image.png

对于学习过HashMap的人来说,简直简单得让人开心,哈哈哈~

我们知道Map是一个映射,有key有value,既然HashSet底层用的是HashMap,那么value在哪里呢???

image.png

value是一个Object,所有的value都是它

所以可以直接总结出:HashSet实际上就是封装了HashMap,操作HashSet元素实际上就是操作HashMap。这也是面向对象的一种体现,重用性贼高

建议:先去阅读HashMap就是这么简单【源码剖析】

二、TreeSet剖析

首先,我们也来看看TreeSet的类继承结构图:

image.png

按照惯例,我们来看看TreeSet顶部注释:

image.png

从顶部注释来看,我们就可以归纳TreeSet的要点了:

image.png

三、LinkedHashSet剖析

首先,我们也来看看TreeSet的类继承结构图:

image.png

按照惯例,我们来看看LinkedHashSet顶部注释:

image.png

从顶部注释来看,我们就可以归纳LinkedHashSet的要点了:

四、总结

可以很明显地看到,Set集合的底层就是Map,所以我都没有做太多的分析在上面,也没什么好分析的了。

下面总结一下Set集合常用的三个子类吧:

HashSet:

TreeSet:

LinkedHashSet:

从结论而言我们就可以根据自己的实际情况来使用了。

上一篇 下一篇

猜你喜欢

热点阅读