Java集合框架-Collection-List-vector(遗留类)

news/2024/11/19 19:40:43/

目录

    • 一、vector层次结构图
    • 二、概述
    • 三、底层数据结构
    • 四、常用方法
    • 五、和ArrayList的对比

一、vector层次结构图

在这里插入图片描述

二、概述

Vector类是单列集合List接口的一个实现类。与ArrayList类似,Vector也实现了一个可以动态修改的数组,两者最本质的区别在于——Vector类是支持线程同步的,因此它线程安全,支持多线程;而ArrayList是线程不同步的,线程不安全。Vector底层也是由一个Object类型的数组来实现的 (注意Vector维护的elementData数组没有用transient关键字修饰)

三、底层数据结构

java">/**
* The internal array used to hold members of a Vector. The elements are
* in positions 0 through elementCount - 1, and all remaining slots are null.
* @serial the elements
*/
protected T[] elementData;/**
* The number of elements currently in the vector, also returned by
* {@link #size}.
* @serial the size
*/
protected int elementCount;/**
* The amount the Vector's internal array should be increased in size when
* a new element is added that exceeds the current size of the array,
* or when {@link #ensureCapacity} is called. If <= 0, the vector just
* doubles in size.
* @serial the amount to grow the vector by
*/
protected int capacityIncrement;  

四、常用方法

略,和ArrayList很像
Java集合框架-Collection-List-ArrayList

五、和ArrayList的对比

同步:Vector 是同步的,也就是说它是线程安全的。每个单独的方法,如 add、get 等被 synchronized 关键字修饰,因此可以在多线程环境下使用而不会出现并发问题。 相比之下,ArrayList 不是线程安全的。
性能:由于 Vector 的方法是同步的,所以在单线程程序中它比 ArrayList 慢。但是,如果不需要线程安全且性能是重点考虑因素,ArrayList 通常是更好的选择。
增长策略:当 Vector 需要增长来存储更多元素时,它通常将其大小翻倍,而 ArrayList 则通常增长 50%。不过,这两个类都允许用户在创建时指定初始大小,并且可以通过调用 ensureCapacity 方法来控制数组的增长。


http://www.ppmy.cn/news/1443670.html

相关文章

免费语音转文字:自建Whisper,贝锐花生壳3步远程访问

Whisper是OpenAI开发的自动语音识别系统(语音转文字)。 OpenAI称其英文语音辨识能力已达到人类水准,且支持其它98中语言的自动语音辨识,Whisper神经网络模型被训练来运行语音辨识与翻译任务。 此外,与其他需要联网运行…

FPGA 以太网概念简单学习

1 MAC和PHY 从硬件的角度来说,以太网接口电路主要由 MAC ( Media Access Control )控制器和物理层接口 PHY(Physical Layer , PHY )两大部分构成。 MAC 指媒体访问控制子层协议,它和 PHY 接…

C语言经典例题-5

1.交换数组 将数组A中的内容和数组B中的内容进行交换。(数组大小一样) #include <stdio.h>void swap(int arr1[],int arr2[], int sz) {int tmp 0;for (int i 0;i < sz;i){tmp arr1[i];arr1[i] arr2[i];arr2[i] tmp;} }void print(int arr1[], int arr2[], int…

前端面试题大合集2----基础篇

目录 1、事件模型 2、什么是事件委托/事件代理 3、说一下Commonjs、AMD和CMD 4、Ajax原理 5、说一下XHR和Fetch的区别 6、实现一个once函数&#xff0c;传入函数只执行一次 7、js监听对象属性的改变 8、如何解决跨域问题 9、介绍js有哪些内置对象 10、介绍js有哪些方法…

Odoo:世界排名第一的免费开源设备资产(EAM)管理系统介绍

本文节选自Odoo亚太金牌服务机构【开源智造】所编写的《Odoo行业应用解决方案白皮书》如需获取完整的知识内容&#xff0c;请至开源智造官网免费获取。感谢网友一键三连&#xff1a;点赞、转发、收藏&#xff0c;您的支持是我们最大的前进动力&#xff01; 概述 实施全面的维护…

k8s:精通 Pod 操作的关键命令

在Kubernetes&#xff08;K8s&#xff09;中&#xff0c;Pod是最基本的部署单元&#xff0c;包含了运行应用所需要的容器、存储、网络等资源。精通Pod操作的关键命令对于有效地管理和维护Kubernetes集群至关重要。以下是一些关键的Pod操作命令&#xff1a; 查看Pod列表&#x…

在vue3项目中设置错误路径的统一跳转

在我们前端开发过程中&#xff0c;如果&#xff0c;访问到了错误的或者不存在的路径&#xff0c;那么会直接出现空白。在一个完整的项目中&#xff0c;应该给用户一些友好的提示&#xff0c;显示他访问到了错误的页面。 我们可以专门的创建一个错误界面的.vue文件&#xff0c;…

FebHost:科技企业如何规划并注册.AI域名?

为确保企业使用.AI域名的方式准确反映其对人工智能技术的关注&#xff0c;企业应考虑以下步骤&#xff1a; 了解法律和合规要求&#xff1a; 第一步是了解与 .AI 域名相关的独特法律和合规要求。由于.AI域名源于安圭拉&#xff0c;企业必须遵守安圭拉的限制和法律规定。这包括…