javase集合框架List篇

ops/2025/3/13 1:34:01/

一、Vector和ArrayList、LinkedList联系和区别,分别的使用场景

ArrayList:底层是数组实现,线程不安全,查询和修改非常快,但是增加和删除慢

LinkedList: 底层是双向链表,线程不安全,查询和修改速度慢,但是增加和删除速度快

Vector: 底层是数组实现,线程安全的,操作的时候使用synchronized进行加锁

使用场景:

  • Vector已经很少用了
  • 增加和删除场景多则用LinkedList
  • 查询和修改多则用ArrayList

二、如果需要保证线程安全,ArrayList应该怎么做,有几种方式

方式一:使用Collections.synchronizedList(synchronized加锁)

List<String> synchronizedList = Collections.synchronizedList(new ArrayList<>());

方式二:使用 CopyOnWriteArrayList(ReentrantLock加锁)

List<String> cowList = new CopyOnWriteArrayList<>();

三、CopyOnWriteArrayList和 Collections.synchronizedList实现线程安全的区别以及它们的使用场景

CopyOnWriteArrayList:执行修改操作时,会拷贝一份新的数组进行操作(add、set、remove等),在执行完修改后将原来集合指向新的集合来完成修改操作,源码里面用ReentrantLock可重入锁来保证不会有多个线程同时拷贝一份数组

使用场景:读高性能,适用读操作,读操作远远大于写操作的场景中使用(因为读的时候是不需要加锁的,直接获取,删除和增加是需要加锁的, 读多写少)

Collections.synchronizedList:线程安全的原因是因为它几乎在每个方法中都使用了synchronized同步锁

使用场景:读操作性能并不如CopyOnWriteArrayList(因为读操作的时候有加锁)

四、CopyOnWriteArrayList的设计思想以及它有什么缺点

设计思想:读写分离+最终一致,读的时候是读旧的数组

缺点:内存占用问题,写时复制机制,内存里会同时驻扎两个对象的内存,旧的对象和新写入的对象,如果对象大则容易发生Yong GC和Full GC


http://www.ppmy.cn/ops/165281.html

相关文章

Axure RP 9 安装与汉化指南(附安装包)包含下载、安装、汉化、授权,Axure9 汉化教程、Axure9 汉化步骤

文章目录 前言一、axure9汉化包及安装包下载二、Axure9 安装步骤三、Axure9 汉化教程四、Axure9 授权步骤 前言 这份资源文件聚焦 Axure RP 9安装教程&#xff0c;精心为用户打造了一套全面的安装与汉化教程。本教程它将一步步详细拆解 Axure RP 9 安装教程&#xff0c;以及实…

搭建大数据技能竞赛比赛环境容器docker模块A-容器绑定物理网卡

搭建大数据平台docker(master slave1 slave2) Docker指定版本安装&#xff0c;docker 20.10 搭建大数据技能竞赛比赛环境容器docker模块A 环境规划 \宿主机&#xff08;centos7.9 min&#xff09;master(容器)slave1(容器)slave2(容器)IP192.168.100.100192.168.100.101192.…

linux下显示进度地复制文件(cp命令的平替)

在 Linux 中&#xff0c;默认的 cp 命令不会显示复制进度&#xff0c;但可以通过以下方法实时查看复制进度和速度&#xff1a; 方法 1&#xff1a;使用 rsync&#xff08;推荐&#xff09; rsync 是 cp 的增强版&#xff0c;支持显示进度条和传输速度&#xff0c;大多数系统已…

【网络安全工程】任务12:网络安全设备

目录 一、防火墙​ 1、作用​ 2、配置方式​ 3、存在的漏洞​ 二、入侵检测系统&#xff08;IDS&#xff09;和入侵防御系统&#xff08;IPS&#xff09;​ 1、作用​ 2、配置方式​ 3、存在的漏洞​ 三、防病毒网关​ ​1、作用​ 2、配置方式​ 3、存在的漏洞​ …

大模型混战:马化腾弯道超车,梁文锋破局,李彦宏开源重构,Kimi失利折戟

发布 | 大力财经 作者 | 魏力 导语&#xff0c;中国大模型“天时地利人和”之战&#xff1a;DeepSeek逆袭、腾讯后发制人与行业格局重构&#xff0c;Kimi后院起火&#xff0c;失利折戟&#xff0c;李彦宏开源重构。 AI 2.0时代的竞争逻辑 当前国产大模型市场格局多元&#x…

vue3中ref和reactive的区别

文章目录 一、核心机制对比二、底层实现剖析1. reactive简单实现2. ref 实现原理 三、实战场景对比1. 基本类型处理2. 对象类型处理3. 数组处理 四、高级特性差异1. 响应式丢失问题2. 类型替换场景 五、性能对比分析六、最佳实践1. 组合式函数规范2. 表单处理策略 七、特殊场景…

oracle goldengate 各版本支持的源端和目标端的数据库版本列表

# oracle goldengate 各版本支持的源端和目标端的数据库版本列表 GoldenGate Supported System Configurations| Oraclehttps://www.oracle.com/integration/goldengate/certifications/

[Web]ServletContext域(Application)

简介 Web应用的Application域的实现是通过ServletContext对象实现的。整个Web应用程序的所有资源共享这个域。生命周期与Web应用程序相同&#xff0c;即当前Web应用程序启动时&#xff08;以服务器视角而非访客视角&#xff09;出生&#xff0c;Web应用服务程序关闭时停止。 通…