- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对Java中Set的深入研究
对Java中Set的深入研究
Set和数学中的集合是同一个概念,就是没有重复元素的集合。 这篇文章主要论述了Set是如何实现没有重复元素(no?duplicate?elements)的,以及阐述了什么是“重复”(duplicate),是相同的地址空间?是equals的返回值为true?是compareTo的返回值为0??还是有相同的hashCode?本文还给出了在什么情况下使用什么样的Set的建议。 注:本文不涉及范型。 1、树形结构: public?interface?Set?extends?Collection{} public?abstract?class?AbstractSet?extends?AbstractCollection?implements?Set{} public?class?CopyOnWriteArraySetextends?AbstractSetimplements?Serializable{} public?abstract?class?EnumSetextends?AbstractSetimplements?Cloneable,?Serializable{} public?class?HashSetextends?AbstractSetimplements?Set,?Cloneable,?Serializable{} public?final?class?JobStateReasonsextends?HashSetimplements?PrintJobAttribute{} public?class?LinkedHashSetextends?HashSetimplements?Set,?Cloneable,?Serializable{} public?class?TreeSetextends?AbstractSetimplements?SortedSet,?Cloneable,?Serializable{} 可以看出,可以实例化的类为:CopyOnWriteArraySet,HashSet,LinkedHashSet,TreeSet。 2、Set是如何实现元素唯一性的 javadoc中对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.” 这段话是对是错,请看下面分析。 要进行下面的论述,我们先了解一下Map。Map中的元素是“键-值”对,其中“键”必须是唯一的。TreeSet和HashSet就是利用这个特性实现“no?duplicate?elements”。它把set中的元素作为Map中的“键”,从而保持元素的唯一性。这些键在Map中又是如何区分的呢?不同的Map有不同的做法,而且区别很大。 下面我们分别就TreeSet、HashSet和CopyOnWriteArraySet进行论述: 2.1、TreeSet部分: 以下以TreeSet为例进行分析。 请看TreeSet的部分实体: public?class?TreeSet?extends?AbstractSet implements?SortedSet,?Cloneable,?java.io.Serializable { //?The?backing?Map private?transient?SortedMap?m; //?The?keySet?view?of?the?backing?Map private?transient?Set?keySet; //?Dummy?value?to?associate?with?an?Object?in?the?backing?Map //这是每个键所指的对像 private?static?final?Object?PRESENT?=?new?Object(); //constructor private?TreeSet(SortedMap?m)?{ this.m?=?m; keySet?=?m.keySet(); } public?TreeSet()?{ this(ne
您可能关注的文档
最近下载
- 录井资料管理与应用系统 v2--说明书.doc
- 人音版音乐上《我爱你,中国》ppt课件.ppt
- 长春市某行政办公楼暖通空调设计.docx
- Unit 1 People of Achievement 单词练习题-2021-2022学年高中英语人教版(2019)选择性必修第一册(word版)含答案.docx
- 鱼儿多多幼儿园小班语言PPT课件.pptx VIP
- 18G901-1混凝土结构施工钢筋排布规则与构造详图(现浇混凝土框架、剪力墙、梁、板).docx
- 河北建筑工程学院 908工程经济学 2019-2021年考研真题.pdf VIP
- 镀锌钢管质量检验报告.pdf
- 德龙ECAM22.110.SB咖啡机中文说明书.doc
- 少先队介绍PPT模板.pptx VIP
文档评论(0)