gzd-java集合框架的一些源码类型分析.docxVIP

gzd-java集合框架的一些源码类型分析.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
集合框架HashMap、HashTable、LinkedHashMapHashMap与HashTable的异同。都实现了Map接口HashTable继承自dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。HashMap允许将null作为Key或者Value,但HashTable不可以HashMap将HashTable的Contains方法去掉了,改成了ContainsKey和ContainsValue.最大的不同是:HashTable方法是synchronize的,在多线程访问HashTable时,不需要自己为他的方法实现同步,而HashMap就必须为之同步.注:HasHTanle所有的方法都是synchronized的,下图只是其中之一。Collection和mapCollection 一组对立的u元素,这些元素都服从某些规则,List必须保持元素的顺序性,而Set不可以有重复的元素collection 对象之间没有指定的顺序,也可以重复元素set 对象之间没有指定的顺序,但不可以有重复元素List 对象之间有指定的顺序,因为引入了角标,可以有重复的元素Map 概念其实很很清晰,其实也可以把Map当成Collection的一个元素,只不过这个元素是一个键值对!但是这样就太混乱了,也太笨拙了,所以把Map作为单个的一个概念,似乎更加清晰,而且Map也很容易扩展,value的值可以是另一个Map,如此下去,甚至无线扩展。(注:List 、Set、Map共同的实现基础是Object数组)除了四个历史集合类外,Java 2 框架还引入了六个集合实现,如下表所示。接口实现历史集合类SetHashSetTreeSetListArrayListVectorLinkedListStackMapHashMapHashtableTreeMapProperties集合详解之collectioncollevction的实现基础是Object数组,所以他肯定有to Array方法任何容器,都能将元素放进去、取出来,而且collection没有get()方法,要想从中去除元素,只有遍历了,所以Collection接口提供了iterator方法,此方法返回一个iterator对象,利用iterator接口的接口的方法,对Collection进行遍历。而iterator接口的方法很少,只有boolean hasNext(); E next(); void remove();。 集合详解之List List接口只继承了Collection接口两种常对List接口的实现简述实现操作特性成员要求List提供基于索引的对成员的随机访问ArrayList提供快速基于索引的成员访问,对头尾的增加删除等最好任意Object自雷的对象LinkedList对任何位置的增加删除支持特别好,但是基于索引的成员访问功能差任意Object子类的对象ArrayList简单分析实现原理ArrayList的3个构造函数这个构造函数比较重要,但是不常用。其中int initialCapacity 表示构造这个ArrayList初始列表的容量,理解这个参数的方式得看ArrayList的两个属性,第一个属性,我们使用elementData[]这个数组来存放集合中的数据,而int initialCapacity就是这个数组的lengh!默认值为10!下面说第二个属性size表示列表中真是数据的存放个数!这个构造函数的作用就是把另一个容器对象中的元素放到当前List对象中去!ElementData[ ]被容器C to Array后赋值,然后ArrayList的实际尺寸Size为此时的ElecmentData [ ]的长度,然后利用elementData[ ],ArrayList的尺寸Size,和获取的class来创建一个ArrayList!!!!疑问??既然ArrayList是基于数组来实现的,那么elementData[]数组的长度是固定的,而怎么能通过Size来最后确定ArrayList尺寸??既然这样,那就是elementData[]有它的扩容机制!!先说ArrayList是继承了抽象类AbstractList而在这个抽象类中有modcount的变量并且被初始化为0,这个变量表示对elementData数组进行了多少次操作,比如扩容、清空。。。。。。。。再看源码首先得到当前elementData 属性的长度oldCapacity。然后通过判断oldCapacity和mi-nCapacity参数谁大来决定是否需要扩容如果minCapacity大于oldCapacity,那么我们就对当前的List对象进行扩容。扩容的的策略为:取(oldCapa

文档评论(0)

nnh91 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档