大家好,3分钟高效掌握Set集合操作技巧相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于3分钟高效掌握Set集合操作技巧和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
集合概述List 集合就是这么简单[源码分析] Map 集合、哈希表、红黑树简介HashMap 就是这么简单[源码分析] LinkedHashMap 就是这么简单[源码分析] TreeMap 就是这么简单[源码]分析】ConcurrentHashMap基于JDK1.8源码分析本文主要讲Set集合的三个子类:
HashSet集合A:的底层数据结构是哈希表(元素为链表的数组)+红黑树。 TreeSet集合A:的底层数据结构是红黑树(它是自平衡二叉树)B:以保证元素的排序。 LinkedHashSet set A:底层数据结构由哈希表(元素为链表的数组)和双向链表组成。本文主要看一下他们比较重要的方法是如何实现的,需要注意什么,最后比较一下什么时候用哪个~
重点:在学习本文之前,最好是看过Map系列的文章在阅读本文之前最好有一些数据结构的基础知识:
Java 实现了单向链表、堆栈和队列。就是这么简单。二叉树就是这么简单。当然,如果我说的有什么错误的地方,还请大家原谅,欢迎在评论中指正~
一、HashSet剖析
首先我们看一下HashSet的继承结构图:
像往常一样,我们看一下HashSet 的置顶评论:
从最上面的评论来看,我们可以总结出HashSet的要点:
实现Set 接口不保证迭代顺序并允许null 元素。底层实际上是一个HashMap实例异步初始容量对迭代性能影响较大。本来想写完List集合之后改用Set集合,但是:我看到底层其实是一个HashMap实例。当时就先去学地图收藏了~
上面的评论说底层其实是一个HashMap实例,那么证据在哪里呢?
wrkTqHf.png 我们看一下整个HashSet类的方法和属性:
M9bACqH.png 对于学过HashMap的人来说,简单得让人开心,哈哈哈~
我们知道Map是一个映射,有键和值,既然HashSet底层用的是HashMap,那么value在哪里呢?
imagevalue是一个Object,所有的value都是它,所以可以直接得出结论:HashSet实际上封装了HashMap,操作HashSet元素实际上就是操作HashMap。这也是面向对象的一种体现,重用性贼高!
建议:先阅读HashMap。就这么简单【源码分析】
二、TreeSet剖析
首先我们看一下TreeSet的类继承结构图:
像往常一样,我们看一下TreeSet的顶部注释:
从上面的评论来看,我们可以总结出TreeSet的要点:
实现NavigableSet接口可以实现排序功能底层实际上是一个TreeMap实例异步图像
三、LinkedHashSet剖析
首先我们也看一下TreeSet的类继承结构图:
像往常一样,我们看一下LinkedHashSet 上的置顶评论:
从最上面的评论来看,我们可以总结出LinkedHashSet的要点:
迭代是有序的并且允许为空底层实际上是一个HashMap+双向链表实例(其实就是LinkedHashMap)...。异步性能比HashSet稍差,因为双向链表的初始容量需要维护,与迭代无关。 LinkedHashSet迭代双向链表
四、总结
。可以明显看出010 -59000,所以我没有对其做太多分析,也没有什么可分析的。
我们总结一下Set集合的三个常用子类:
Set集合的底层就是MapUnordered,允许为null,底层是HashMap(哈希表+红黑树),非线程同步HashSet:Ordered,不允许为null,底层是TreeMap(红黑树),非线程同步TreeSet:迭代是有序的,允许null,底层是HashMap+双向链表,非线程同步,从结论来看,我们可以根据自己的实际情况来使用。
参考:
https://zhuanlan.zhihu.com/p/29021276https://blog.csdn.net/panweiwei1994/article/details/76555359 文章如有错误,还请指正,让大家互相交流。习惯在微信上阅读技术文章,想要获取更多Java资源的同学可以拨打LinkedHashSet:。为了方便大家,我们刚刚新建了一个号码关注微信公众号:Java3y,大家也可以在那里进行交流。感谢您的支持!希望可以介绍给其他有需要的朋友。
【3分钟高效掌握Set集合操作技巧】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
哇,3分钟就懂了?太厉害了吧!这集装箱也太好用了吧!
有12位网友表示赞同!
一直觉得Set集合不太明白,现在这个方法应该很快上手!
有12位网友表示赞同!
正好我最近在学Java,要研究一下Set集合,这篇文章看起来很适合 beginner 。
有7位网友表示赞同!
有视频教程吗?我喜欢边看边学!
有12位网友表示赞同!
3分钟就搞定?期待看看能包含哪些常用场景。
有17位网友表示赞同!
听起来很简单,我以前也用过Set集合,不过好像没太深入理解。现在应该可以更清楚了!
有9位网友表示赞同!
最近在项目里遇到用到Set集合的问题,正好可以学习一下这篇教程!
有5位网友表示赞同!
希望能够解释得比较详细一些,让我能完全掌握 Set 集合的用法。
有12位网友表示赞同!
Set集合的优缺点是什么?这篇文章会讲吗?
有5位网友表示赞同!
3分钟搞定 sounds awesome!
有6位网友表示赞同!
看起来很实用,我要分享给我的朋友们!
有14位网友表示赞同!
我也对 Set 集合很感兴趣,希望这个教程能给我一些启发!
有16位网友表示赞同!
Set集合在哪些场景下是特别实用的?
有18位网友表示赞同!
我喜欢这种快速学习的方法,可以让我更快掌握新技能。
有20位网友表示赞同!
这篇文章适合什么级别的程序员阅读呢?
有7位网友表示赞同!
如果用例子讲解更容易理解,期待看到一些具体的实例代码!
有11位网友表示赞同!
总觉得 Set 集合很强大,能解决很多编程问题,要好好学习!
有11位网友表示赞同!
希望这个教程能帮我解决一些关于Set集合的疑问, 我之前遇到过一些问题。
有5位网友表示赞同!