对Java中Set的深入研究.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档