• java 中的JDK封装的数据结构和算法解析(集合类)----链表 List 之 Vector (向量)


    Vector  看JDK解释(中文翻译)吧:

    Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。

    每个向量会试图通过维护 capacity 和 capacityIncrement 来优化存储管理。capacity 始终至少应与向量的大小相等;这个值通常比后者大些,因为随着将组件添加到向量中,其存储将按 capacityIncrement 的大小增加存储块。应用程序可以在插入大量组件前增加向量的容量;这样就减少了增加的重分配的量。

    由 Vector 的 iterator 和 listIterator 方法所返回的迭代器是快速失败的:如果在迭代器创建后的任意时间从结构上修改了向量(通过迭代器自身的 remove 或 add 方法之外的任何其他方式),则迭代器将抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就完全失败,而不是冒着在将来不确定的时间任意发生不确定行为的风险。Vector 的 elements 方法返回的 Enumeration 不是 快速失败的。

    注意,迭代器的快速失败行为不能得到保证,一般来说,存在不同步的并发修改时,不可能作出任何坚决的保证。快速失败迭代器尽最大努力抛出ConcurrentModificationException。因此,编写依赖于此异常的程序的方式是错误的,正确做法是:迭代器的快速失败行为应该仅用于检测 bug。

    从 Java 2 平台 v1.2 开始,此类改进为可以实现 List 接口,使它成为 Java Collections Framework 的成员。与新 collection 实现不同,Vector 是同步的。

    下面主要分析Vector的数据结构和快速失败行为

                由于Vector的数据结构和ArrayList的数据结构差不多,所以这里以快速失败的原因分析为主,对于Vector的算法这里略讲:

         Vector的数据结构: 

               

                             

    构造方法:

               

  • 相关阅读:
    Makefile的介绍与使用(一)
    关于OpenWRT第一次编译时出现的一些问题
    ssh连接时出现 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 解决办法
    ArcGIS 添加存WKT字符串的字段
    已连接的 RDBMS 实例未针对 Esri 空间类型配置进行相应设置
    ArcGIS10.2 安装好后,数据库连接的配置
    用Excel将中文转成大驼峰拼音
    将 Python 项目的所有py文件编译成.pyc
    地图要素增删改服务WFS: Openlayer+GeoServer+GeoPackage
    ArcGIS 和 QGIS 经常崩溃闪退的原因
  • 原文地址:https://www.cnblogs.com/immer/p/5144294.html
Copyright © 2020-2023  润新知