Java中Set是什么
小编给大家分享一下Java中Set是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
Set概述
因为Set的结构及实现都和Map保持高度一致,这里将不再对其进行分析了,感兴趣的朋友可以自行查看源码。但我们还是需要知道什么是Set,Set是一个包含不可重元素的集合,也就是所有的元素都是唯一的。还是看下文档说明吧:
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系列也有SortedSet
、NavigableSet
这种基于排序的接口,它们的作用在分析Map时都已经详细介绍过了。
总结
分析了这么多集合类的源码之后,最大的感触并不是,"哦,原来如此~",而是惊叹于作者高度的抽象思维,严谨的代码,以及极其规范的编码风格。代码本身的价值远远比不上这种思想带来的受益,我们应该掌握的是这些原理,而不是记住枯燥的代码实现。
但惊艳的背后,作者付出的艰辛也是无比巨大的,其中也饱含辛酸与无奈。创造出那么多的数据结构,不就是为了提高处理数据的能力吗?然而现实是如果想在一方面追求极致,就必须在其他方面有所妥协,没有一种结构能够让我们一劳永逸。所以需求无尽,探索无尽。可还记得在LinkedList
中的查询方法?在这么小的点上,还尽力把查询速度提升了一半,当时真的被这种操作惊艳了,一方面是因为工程师的细腻,另一方面,可能是因为,"哎,实在做不了更多了~"的感叹。
在Java的集合类中,大量的依赖于对象的equals
、hashCode
、clone
方法,有些还需要我们实现Comparable
接口。如果对数据结构有所理解,又清楚集合类用了哪些个数据结构,我想需要实现哪些方法是可以推测出来的。如果我们能把握这些细节,就能写出更优秀的代码。如果我们能掌握这些思想,就能超脱语言的束缚,理解软件设计的精髓。
以上是"Java中Set是什么"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!