Java中的集合合编.docx

  1. 1、本文档共110页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java中的集合 上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等。3.比较  是否有序是否允许元素重复Collection否是List是是SetAbstractSet否否 HashSet TreeSet是(用二叉排序树)MapAbstractMap否使用key-value来映射和存储数据,key必须唯一,value可以重复 HashMap TreeMap是(用二叉排序树)HashMap简介? ? HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。? ? HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。? ? HashMap?实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆。HashMap源码剖析? ? HashMap的源码如下(加入了比较详细的注释):[java]?view plain?copypackage?java.util;????import?java.io.*;???????public?class?HashMapK,V????????extends?AbstractMapK,V????????implements?MapK,V,?Cloneable,?Serializable????{???????????//?默认的初始容量(容量为HashMap中槽的数目)是16,且实际容量必须是2的整数次幂。????????static?final?int?DEFAULT_INITIAL_CAPACITY?=?16;???????????//?最大容量(必须是2的幂且小于2的30次方,传入容量过大将被这个值替换)????????static?final?int?MAXIMUM_CAPACITY?=?1??30;???????????//?默认加载因子为0.75???????static?final?float?DEFAULT_LOAD_FACTOR?=?0.75f;???????????//?存储数据的Entry数组,长度是2的幂。????????//?HashMap采用链表法解决冲突,每一个Entry本质上是一个单向链表????????transient?Entry[]?table;???????????//?HashMap的底层数组中已用槽的数量????????transient?int?size;???????????//?HashMap的阈值,用于判断是否需要调整HashMap的容量(threshold?=?容量*加载因子)????????int?threshold;???????????//?加载因子实际大小????????final?float?loadFactor;???????????//?HashMap被改变的次数????????transient?volatile?int?modCount;???????????//?指定“容量大小”和“加载因子”的构造函数????????public?HashMap(int?initialCapacity,?float?loadFactor)?{????????????if?(initialCapacity??0)????????????????throw?new?IllegalArgumentException(Illegal?initial?capacity:??+???????????????????????????????????????????????????initialCapacity);????????????//?HashMap的最大容量只能是MAXIMUM_CAPACITY????????????if?(initialCapacity??MAXIMUM_CAPACITY)????????????????initialCapacity?=?MAXIMUM_CAPACITY;????????????//加载因此不能小于0??????????if?(loadFactor?=?0?||?Float.isNaN(loadFactor))????????????????throw?new?IllegalArgumentException(Illegal?load?factor:??+????????????

文档评论(0)

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

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

1亿VIP精品文档

相关文档