Java集合源码分析之Set概述_一点课堂(多岸学院)

这篇文章是本系列的完结了,也会是读起来最轻松的文章了。由于这里只有一个概念,那就是Set是什么,其他的则是一些感触与总结。java

Set概述

由于Set的结构及实现都和Map保持高度一致,这里将再也不对其进行分析了,感兴趣的朋友能够自行查看源码。但咱们仍是须要知道什么是SetSet是一个包含不可重元素的集合,也就是全部的元素都是惟一的。仍是看下文档说明吧:数据结构

A collection that contains no duplicate elements. More formally, sets contain no pair of elements e1 and e2 such that e1.equals(e2), and at most one null element. As implied by its name, this interface models the mathematical set abstraction.学习

此外Set系列也有SortedSetNavigableSet这种基于排序的接口,它们的做用在分析Map时都已经详细介绍过了。this

总结

分析了这么多集合类的源码以后,最大的感触并非,“哦,原来如此~”,而是惊叹于做者高度的抽象思惟,严谨的代码,以及极其规范的编码风格。代码自己的价值远远比不上这种思想带来的受益,咱们应该掌握的是这些原理,而不是记住枯燥的代码实现。编码

但惊艳的背后,做者付出的艰辛也是无比巨大的,其中也饱含辛酸与无奈。创造出那么多的数据结构,不就是为了提升处理数据的能力吗?然而现实是若是想在一方面追求极致,就必须在其余方面有所妥协,没有一种结构可以让咱们一劳永逸。因此需求无尽,探索无尽。可还记得在LinkedList中的查询方法?在这么小的点上,还尽力把查询速度提高了一半,当时真的被这种操做惊艳了,一方面是由于工程师的细腻,另外一方面,多是由于,“哎,实在作不了更多了~”的感叹。设计

在Java的集合类中,大量的依赖于对象的equalshashCodeclone方法,有些还须要咱们实现Comparable接口。若是对数据结构有所理解,又清楚集合类用了哪些个数据结构,我想须要实现哪些方法是能够推测出来的。若是咱们能把握这些细节,就能写出更优秀的代码。若是咱们能掌握这些思想,就能超脱语言的束缚,理解软件设计的精髓。code

若是阅读本系列文章可以给您带来一丁点的提高,对我都是莫大的欣慰与鼓励。orm

如今,你有把握回答在开篇中说起的几个问题了吗?对象


【感谢您能看完,若是可以帮到您,麻烦点个赞~】blog

更多经验技术欢迎前来共同窗习交流: 一点课堂-为梦想而奋斗的在线学习平台 http://www.yidiankt.com/

![关注公众号,回复“1”免费领取-【java核心知识点】] file

QQ讨论群:616683098

QQ:3184402434

想要深刻学习的同窗们能够加我QQ一块儿学习讨论~还有全套资源分享,经验探讨,等你哦! 在这里插入图片描述

相关文章
相关标签/搜索