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

server/2024/11/13 9:47:47/

目录

    • 一、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/server/16778.html

相关文章

主从模式与AI大模型结合:开启AI新时代

什么是主从模式? 主从模式(Master-Slave Pattern)是一种在分布式系统中常用的架构设计模式。在主从模式中,系统被分解为两种角色:主节点(Master)和从节点(Slave)。主节点…

python_django农产品物流信息服务系统6m344

Python 中存在众多的 Web 开发框架:Flask、Django、Tornado、Webpy、Web2py、Bottle、Pyramid、Zope2 等。近几年较为流行的,大概也就是 Flask 和 Django 了 Flask 是一个轻量级的 Web 框架,使用 Python 语言编写,较其他同类型框…

上海国际会展深入未来智能相机的发展趋势

#智能相机# 近日,在上海国际会展中心举办了一场引人注目的盛会——上海国际橡塑展。本次展览本公司旨在展示智能相机的最新技术与应用,吸引国内外的企业、专家和学者齐聚一堂,共同探讨和展望国内智能相机行业的未来发展。本次展览德成视觉科技…

matlab保存示波器数据

再重新运行一下示波器 然后就可以在工作区看见(这里没有运行所以没有) 将保存到文件夹中方便后续绘图

linux下使用qt+mpv调用GPU硬件解码

linux下GPU硬件解码接口,常用的有vdpau和vaapi。 mpv是基于mplayer开发的一个播放器。此外,mpv还提供了函数库libmpv,通过使用libmpv可以编写一个简单的播放器。 基于qtlibmpv的demo,官方例子代码如下:https://github.…

多地如何组网?如何异地组网?

在现代社会中,信息通信技术的发展使得人与人之间的距离变得越来越近。不同地区之间的电脑与电脑、设备与设备、电脑与设备之间的信息远程通信问题仍然存在。为了解决这一问题,天联组网天联应运而生。本文将介绍天联组网天联的工作原理以及其在多地组网异…

多线程(74)分段锁

分段锁(Segmented Locking)是一种用于提高多线程程序性能的锁机制,通过将锁细分来减少竞争,从而在高并发环境中提高性能。分段锁在Java的ConcurrentHashMap中有广泛应用。 分段锁的工作原理 分段锁的基本思想是将锁分为多个段&a…

Pytorch:神经网络训练过程代码详解

文章目录 一、基本概念1、epoch2、遍历DataLoader 二、神经网络训练过程代码详解步骤一:选择并初始化优化器步骤二:计算损失步骤三:反向传播步骤四:更新模型参数步骤五:清空梯度组合到训练循环中 一、基本概念 for ep…