JavaSE——集合3:ArrayList、Vector

news2024/11/29 12:55:34

目录

一、ArrayList的注意事项

二、ArrayList的扩容机制(重要) 

三、Vector底层结构和源码剖析

1.Vector类的定义说明

2.Vector底层也是一个对象数组

3.Vector是线程同步的,即线程安全,Vector类的操作方法带有synchronized

4.在开发中,需要线程同步安全时,考虑使用Vector

5.Vector的扩容机制

四、ArrayList与Vector的比较


注意:本文使用的是JDK11

一、ArrayList的注意事项

  1. ArrayList可以加入多个null
    ArrayList list = new ArrayList();
    list.add(null);
    list.add("jack");
    list.add(null);
    System.out.println(list);
    // [null, jack, null]
  2. ArrayList是由数组来实现数据存储的
  3. ArrayList基本等同于Vector,ArrayList是线程不安全的,没有synchronized,该关键字是专门用于线程互斥的,因此在多线程情况下,不建议使用ArrayList。

二、ArrayList的扩容机制(重要) 

ArrayList被扩容时,transient修饰的elementData属性不会被序列化

  1. ArrayList中维护了一个Object类型的数组elementData
    transient Object[] elementData;
  2. 当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第1次添加,则扩容elementData为10,如果需要再次扩容,则扩容elementData为1.5倍
  3. 如果使用的是指定大小的构造器,则初始elementData容量为指定大小,如果需要扩容,则直接扩容elementData为1.5倍。

三、Vector底层结构和源码剖析

1.Vector类的定义说明

2.Vector底层也是一个对象数组

3.Vector是线程同步的,即线程安全,Vector类的操作方法带有synchronized

4.在开发中,需要线程同步安全时,考虑使用Vector

5.Vector的扩容机制

  1. 如果是无参,默认长度为10,放满后,扩容为原来的2倍;
  2. 如果指定大小,则每次直接扩容为原有长度的2倍。

四、ArrayList与Vector的比较

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2206172.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

obs录屏怎么样?四大优秀录屏工具亲测好用!

录屏需求日盛,接下来我们就来聊聊几款市面上较为热门的录屏软件——福昕录屏大师、转转大师录屏、爱拍录屏以及经典的obs录屏,希望能给寻找合适录屏工具的您带来一些灵感。 福昕录屏大师 直达链接:www.foxitsoftware.cn/REC/ 如果你刚开始…

如何在组织内推广和应用六西格玛设计?

六西格玛设计(Design for Six Sigma, DFSS)作为一种先进的流程设计和优化方法论,旨在通过设计阶段的创新与严谨,确保产品或服务从一开始就具备高度的质量和客户满意度。本文,深圳天行健企业管理咨询公司将深入探讨如何…

HCIP--以太网交换安全(三)MAC地址漂移防止与检测

MAC地址漂移防止与检测 一、MAC地址漂移防止与检测知识点 1.1MAC地址漂移的概述 MAC地址漂移是指交换机上一个vlan内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。 1.2.MAC地址漂移的防止方法 (1)配置…

浸入式电磁流量计如何工作?

磁力如何产生可感应电压? 所有磁流量计都利用法拉第感应定律的指导原理,该定律显示了“表达变化的磁场在电路中感应出电压的定量关系”。 该感应定律可用于测量导体液体(如水)的速度,而无需移动部件。与其他类型的仪…

『网络游戏』游戏数据库管理类查询插入账号存储【23】

新建数据库连接 新建数据库 打开数据库 新建表 账号数据 设计表 - 添加属性 对照服务器工程GameMsg增加对应字段 保存后在服务器脚本中操作数据库数据 添加数据层文件夹 创建脚本:DBMgr 编写脚本:DBMgr.cs 修改脚本:ServerRoot.cs 将MySql.d…

两个数相加(c语言)

1./给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target // 的那 两个 整数,并返回它们的数组下标。 //你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。 /…

“城市酷选”排队免单模式:创新机制引领本地消费新风尚

近期,众多朋友对排队免单模式展现出浓厚兴趣,旨在借助商家优惠吸引顾客,激活本地商业活力,推动实体消费。自去年下半年起,本地生活服务平台热度持续攀升,其中,排队免单模式作为多商家联合的优惠…

DGX的优势

NVIDIA DGX 的 AI 领导力 文章目录 前言一、概述推动跨行业的 AI 创新二、优势客户体验到哪些好处?1. 利用生成式 AI 释放研究人员的潜力2. 加快现代应用程序的上市时间3. 利用 AI 改善客户体验三、性能性能很重要1. 为世界上最先进的超级计算机提供动力2. 打破世界纪录3. 提高…

『网络游戏』进入游戏主城UI跳转主城【26】

首先在Unity客户端中创建一个空节点重命名为MainCityWnd 设置父物体为全局 创建空节点钉在左上角作为角色信息UI 在钉子下创建Image 创建脚本:MainCityWnd.cs 编写脚本:MainCityWnd.cs 挂载脚本 创建脚本:MainCitySys.cs 编写脚本&#xff1a…

《Programming from the Ground Up》读后感

之所以看这本书,是想了解一些跟汇编相关的知识,打开这本书后就被作者的观点——“If you don’t understand something the first time, reread it. If you still don’t understand it, it is sometimes best to take it by faith and come back to it …

MeterSphere接口自动化平台调试

1。后置脚本节目 //导入json包 import org.json.*; import com.decode.DecodeMain; String responseprev.getResponseDataAsString(); String result DecodeMain.DecodeUtil(response); log.info(“获取批次账单id result:”result); //转换为Object对象类型 JSONObject data_…

Linux基础项目开发day2:量产工具——输入系统

文章目录 前言一、数据结构抽象1、数据本身2、数据本身3、input_manager.h 二、触摸屏编程1、touchscreen.c 三、触摸屏单元测试1、touchscreen.c2、上机测试 四、网络编程netiput.c 五、网络单元测试1、netiput.c2、client.c3、上机测试 六、输入系统的框架1、框架思路2、inpu…

5.STM32的串口通信

5.STM32的串口通信 两个串口之间的通信 发送端口:TX 接受端口:RX 注意一台设备的TX 与 另一台RX相连接 共地:还需要将两端地线相连接,将设备的参考电势在同一水平(通讯的前提) 建立连接 在cubeIDE中 图…

独家揭秘!新手铲屎官不可错过的宠物空气净化器选购攻略就在这

终于给我等到了双十一,这可是一年一度的促销力度最大的购物狂欢节,不要问我为什么这么期待,因为我养了猫,猫咪掉毛太严重了,必须得买一个宠物空气净化器,不然我在这个家就呆不下去了。 最近国庆节刚带猫回…

Transactional注解导致Spring Bean定时任务失效

背景 业务需要定时捞取数据库中新增的数据做数据处理及分析,更新状态,处理结束。而我们不能随意定义线程池,规定使用统一的标准规范来定义线程池。如在配置文件中配置线程池的属性:名称,线程核心数等,任务…

用最短长度的绳子把整个花园围起来

给定一个数组 trees,其中 trees[i] [xi, yi] 表示树在花园中的位置。 你被要求用最短长度的绳子把整个花园围起来,因为绳子很贵。只有把 所有的树都围起来,花园才围得很好。 返回恰好位于围栏周边的树木的坐标。 示例 1: 输入: points […

白鲨优化算法(WSO)的MATLAB代码复现

目录 1 白鲨优化算法优化BP神经网络代码复现 2 白鲨优化算法优化支持向量机代码复现 3 白鲨优化算法优化长短期记忆神经网络代码复现 1 白鲨优化算法优化BP神经网络代码复现 1)单输出回归预测:单输出回归预测:大白鲨算法优化BP神经网络模…

OpenCV HoughLine()函数与HoughlinesP()函数及HoughCircles()函数详解及用法示例

OpenCV HoughLine()函数与HoughlinesP()函数都用于图像中的直线检测,但二者是有区别的。 HoughLine()函数 HoughLines()基于霍夫变换的原理,通过投票机制来确定图像中直线的存在及其参数。该函数返回检测到的直线的极坐标参数。它…

【多线程】CAS原理

文章目录 为什么会出现CAS思想?CAS概念CAS自旋概念CAS的简单使用CAS源码解析 UnSafe类CAS底层原理CAS的硬件保证CAS自旋锁的实现前置知识----原子引用AtomicReference实现自旋锁 CAS缺点ABA问题什么是ABA问题如何解决ABA问题简单案例AtomicStampedReference的源码分析 为什么会…

leetcode链表(二)-两两交换链表中的节点

题目 . - 力扣(LeetCode) 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 思路 一定要使用虚拟头节点…