动力节点java教程之集合大家族.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动力节点java教程之集合大家族

动力节点java教程之集合大家族 在编写java程序中 ,我们最常用的除了八种基本数据类型 ,String对象外还有一个集 合类 ,在我们的的程序中到处充斥着集合类的身影 !java 中集合大家族的成员实在是太丰 富了 ,有常用的ArrayList、HashMap、HashSet ,也有不常用的 Stack、Queue ,有线程 安全的Vector、HashTable ,也有线程不安全的 LinkedList、TreeMap等等 ! 上面的图展示了整个集合大家族的成员以及他们之间的关系。下面就上面的各个接口、 基类做一些简单的介绍(主要介绍各个集合的特点。区别) ,更加详细的介绍会在不久的将来 一一讲解。 一、Collection接口 Collection接口是最基本的集合接口 ,它不提供直接的实现 ,Java SDK提供的类都是继承 自Collection的 “子接口”如 List和 Set。Collection所代表的是一种规则 ,它所包含的 元素都必须遵循一条或者多条规则。如有些允许重复而有些则不能重复、有些必须要按照顺 序插入而有些则是散列 ,有些支持排序但是有些则不支持。 在 Java 中所有实现了 Collection接口的类都必须提供两套标准的构造函数 ,一个是无参 , 用于创建一个空的 Collection ,一个是带有 Collection参数的有参构造函数 ,用于创建一 个新的 Collection ,这个新的 Collection与传入进来的 Collection具备相同的元素。 二、List 接口 List接口为 Collection直接接口。List所代表的是有序的 Collection ,即它用某种特定的 插入顺序来维护元素顺序。用户可以对列表中每个元素的插入位置进行精确地控制 ,同时可 以根据元素的整数索引 (在列表中的位置 )访问元素 ,并有哪些信誉好的足球投注网站列表中的元素。实现 List 接 口的集合主要有 :ArrayList、LinkedList、Vector、Stack。 2.1、ArrayList ArrayList是一个动态数组 ,也是我们最常用的集合。它允许任何符合规则的元素插入甚至 包括 null。每一个 ArrayList都有一个初始容量 (10 ),该容量代表了数组的大小。随着容 器中的元素不断增加 ,容器的大小也会随着增加。在每次向容器中增加元素的同时都会进行 容量检查 ,当快溢出时 ,就会进行扩容操作。所以如果我们明确所插入元素的多少 ,最好指 定一个初始容量值 ,避免过多的进行扩容操作而浪费时间、效率。 size、isEmpty、get、set、iterator 和 listIterator 操作都以固定时间运行。add 操作以 分摊的固定时间运行 ,也就是说 ,添加 n 个元素需要 O(n) 时间 (由于要考虑到扩容 ,所 以这不只是添加元素会带来分摊固定时间开销那样简单 )。 ArrayList 擅长于随机访问。同时ArrayList是非同步的。 2.2、LinkedList 同样实现List接口的LinkedList与ArrayList不同 ,ArrayList是一个动态数组 ,而LinkedList 是一个双向链表。所以它除了有ArrayList 的基本操作方法外还额外提供了 get ,remove , insert方法在 LinkedList 的首部或尾部。 由于实现的方式不同 ,LinkedList 不能随机访问 ,它所有的操作都是要按照双重链表的需要 执行。在列表中索引的操作将从开头或结尾遍历列表 (从靠近指定索引的一端 )。这样做的 好处就是可以通过较低的代价在 List 中进行插入和删除操作。 与 ArrayList 一样 ,LinkedList 也是非同步的。如果多个线程同时访问一个 List ,则必须自 己实现访问同步。一种解决方法是在创建 List 时构造一个同步的 List : List list =Collections.synchronizedList(new LinkedList(…)); 2.3、Vector 与 ArrayList 相似 ,但是 Vector是同步的。所以说 Vector是线程安全的动态数组。它的操 作与ArrayList 几乎一样。 2.4、Stack Stack继承自Vector ,实现一个后进先出的堆栈。Stack提供 5个额外的方法使得 Vector 得以被当作堆栈使用。基本的 push和 pop 方法 ,还有 peek方法得到栈顶的元素 ,empty 方法测试堆栈是否为空 ,search方法检测一个元素在堆栈中

文档评论(0)

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

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

1亿VIP精品文档

相关文档