网站的布局方式有哪些/bt磁力天堂torrentkitty

网站的布局方式有哪些,bt磁力天堂torrentkitty,东莞横沥三江工业区,网站后台打开慢hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:说说ArrayList和LinkedList的区别 ArrayList 与 LinkedList 的详细对比 一、底层数据结构 特性ArrayListLinkedList存…

hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶

面试官:说说ArrayList和LinkedList的区别

ArrayList 与 LinkedList 的详细对比

一、底层数据结构
特性ArrayListLinkedList
存储结构基于动态数组基于双向链表
内存分配连续内存块非连续内存,节点分散存储
元素访问通过索引直接寻址(时间复杂度 O(1))需要遍历链表(时间复杂度 O(n))
插入/删除需要移动元素(时间复杂度 O(n))修改指针(时间复杂度 O(1),但需先遍历到位置)
空间开销仅存储数据和数组容量,内存紧凑每个节点额外存储前驱和后继指针,内存占用更高

二、核心操作性能对比
1. 随机访问(Get/Set)
  • ArrayList

    • 直接通过索引访问数组元素,时间复杂度 O(1)
    • 示例代码:
      list.get(1000);  // 直接定位到数组第1000个位置
      
  • LinkedList

    • 需要从链表头部或尾部遍历到目标位置,时间复杂度 O(n)
    • 优化技巧:根据索引位置选择从头或尾遍历(如 index < size/2 从头开始)。
    • 示例代码:
      list.get(1000);  // 需要遍历至少1000个节点
      
2. 插入与删除
  • 尾部插入(Add)

    • ArrayList
      • 如果数组未满,直接添加到末尾,时间复杂度 O(1)
      • 如果数组已满,需扩容(通常扩容为原容量的1.5倍)并复制数据,均摊时间复杂度 O(1)
    • LinkedList
      • 直接修改尾节点的指针,时间复杂度 O(1)(无需遍历)。
  • 中间插入(Add at Index)

    • ArrayList
      • 需要将插入位置后的元素后移,时间复杂度 O(n)
      • 示例:在索引 i 处插入元素,需移动 n - i 个元素。
    • LinkedList
      • 先遍历到目标位置(时间复杂度 O(n)),再修改指针(O(1)),总体时间复杂度 O(n)
  • 删除(Remove)

    • ArrayList
      • 类似插入操作,需将后续元素前移,时间复杂度 O(n)
    • LinkedList
      • 遍历到目标节点后修改指针,时间复杂度 O(n)(遍历是主要开销)。

三、内存占用与扩容机制
1. 内存占用
  • ArrayList

    • 内存连续,仅存储数据和数组容量字段。
    • 每个元素占用空间 = 数组槽位大小(如 Integer 为4字节)。
    • 示例:存储1000个整数,数组容量为1000时,总内存 ≈ 1000 * 4B = 4KB。
  • LinkedList

    • 每个节点包含数据、前驱指针、后继指针,内存分散。
    • 每个节点内存开销 ≈ 对象头(12B) + 3个引用(各4B) + 数据 = 至少 24B。
    • 示例:存储1000个整数,总内存 ≈ 1000 * 24B = 24KB(是 ArrayList 的6倍)。
2. 扩容机制
  • ArrayList

    • 默认初始容量为10,扩容时创建新数组并复制数据。
    • 扩容公式:newCapacity = oldCapacity + (oldCapacity >> 1)(即1.5倍)。
    • 扩容代价高,但均摊时间复杂度仍为 O(1)。
  • LinkedList

    • 无扩容概念,每次插入动态创建新节点。
    • 无内存浪费,但频繁插入可能触发GC(节点对象创建/销毁)。

四、应用场景
适合使用 ArrayList 的场景
  1. 频繁随机访问
    • 例如:按索引读取或修改元素(如 list.get(i))。
  2. 尾部插入/删除
    • 例如:日志记录、批量数据处理。
  3. 内存敏感场景
    • 需存储大量数据且希望减少内存占用。
适合使用 LinkedList 的场景
  1. 频繁在头部或中间插入/删除
    • 例如:实现栈(Stack)、队列(Queue)或双向队列(Deque)。
  2. 动态调整数据规模
    • 无需担心扩容问题,适合元素数量变化较大的场景。
  3. 需要实现复杂数据结构
    • 如LRU缓存(通过双向链表快速移动节点)。

五、代码示例与性能测试
1. 尾部插入性能对比
// ArrayList
List<Integer> arrayList = new ArrayList<>();
long start = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {arrayList.add(i);  // 均摊 O(1)
}
System.out.println("ArrayList 尾部插入耗时: " + (System.currentTimeMillis() - start) + "ms");// LinkedList
List<Integer> linkedList = new LinkedList<>();
start = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {linkedList.add(i);  // O(1)
}
System.out.println("LinkedList 尾部插入耗时: " + (System.currentTimeMillis() - start) + "ms");

结果

  • ArrayList 通常更快(因内存连续,CPU缓存友好)。
  • LinkedList 可能因频繁创建节点对象导致GC开销。
2. 中间插入性能对比
// ArrayList
start = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {arrayList.add(0, i);  // 每次插入需移动所有元素,O(n)
}
System.out.println("ArrayList 头部插入耗时: " + (System.currentTimeMillis() - start) + "ms");// LinkedList
start = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {linkedList.add(0, i);  // O(1)
}
System.out.println("LinkedList 头部插入耗时: " + (System.currentTimeMillis() - start) + "ms");

结果

  • LinkedList 明显优于 ArrayList(避免元素移动)。

六、高级特性与注意事项
  1. 迭代器性能

    • ArrayList:迭代器直接通过索引访问,性能高。
    • LinkedList:迭代器需逐个遍历节点,性能较低(但实现了 ListIterator,支持双向遍历)。
  2. 线程安全性

    • 两者均非线程安全,多线程环境下需使用 Collections.synchronizedListCopyOnWriteArrayList
  3. 序列化与克隆

    • ArrayList 重写了 clone(),实现浅拷贝。
    • LinkedList 的克隆需要遍历复制所有节点。

🐮👵

维度ArrayListLinkedList
数据结构动态数组双向链表
访问效率O(1)(随机访问)O(n)
插入/删除O(n)(需移动元素)O(1)(已知位置)或 O(n)(需遍历)
内存占用低(连续存储)高(每个节点额外指针开销)
适用场景随机访问、尾部操作、内存敏感频繁头部/中间插入删除、实现队列/栈

选择建议

  • 优先使用 ArrayList(90%场景更优)。
  • 仅在需要频繁在 头部或中间插入/删除,或实现 队列/栈 时选择 LinkedList。

在这里插入图片描述

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

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

相关文章

华为hcie证书有什么作用?

新盟教育 专注华为认证培训十余年 为你提供认证一线资讯&#xff01; 在当今数字化飞速发展的时代&#xff0c;ICT行业对专业人才的需求日益增长。华为HCIE证书作为华为认证体系中的最高级别认证&#xff0c;无疑是众多IT从业者追求的目标。那么&#xff0c;华为HCIE证书到底有…

通过微步API接口对单个IP进行查询

import requests import json# 微步API的URL和你的API密钥 API_URL "https://api.threatbook.cn/v3/ip/query" API_KEY "***" # 替换为你的微步API密钥 def query_threatbook(ip):"""查询微步API接口&#xff0c;判断IP是否为可疑"…

Redis|集群 Cluster

文章目录 是什么能干嘛集群算法-分片-槽位slotredis集群的槽位slotredis集群的分片分片槽位的优势slot槽位映射——业界的3种解决方案小厂&#xff1a;哈希取余分区中厂&#xff1a;一致性哈希算法分区大厂&#xff1a;哈希槽分区 面试题&#xff1a;为什么 Redis 集群的最大槽…

城市地质安全专题连载⑧ | 强化工程地质安全保障力度,为工程项目全栈护航

作者 | 徐海洋、孙美琴 在城市化进程日益加速的今天&#xff0c;城市地质安全问题日益凸显&#xff0c;成为制约城市可持续发展的关键因素之一。从隧道掘进中的突发灾害&#xff0c;到高层建筑地基的稳定性挑战&#xff0c;再到城市地下空间的开发利用风险&#xff0c;地质安全…

FFMPEG利用H264+AAC合成TS文件

本次的DEMO是利用FFMPEG框架把H264文件和AAC文件合并成一个TS文件。这个DEMO很重要&#xff0c;因为在后面的推流项目中用到了这方面的技术。所以&#xff0c;大家最好把这个项目好好了解。 下面这个是流程图 从这个图我们能看出来&#xff0c;在main函数中我们主要做了这几步&…

sqli-lab靶场学习(七)——Less23-25(关键字被过滤、二次注入)

前言 之前的每一关&#xff0c;我们都是在末尾加上注释符&#xff0c;屏蔽后面的语句&#xff0c;这样我们只要闭合了区间之后&#xff0c;差不多就是为所欲为的状态。但如果注释符不生效的情况下&#xff0c;又该如何呢&#xff1f; Less23&#xff08;注释符被过滤&#xff…

Self-Supervised Prompt Optimization

论文&#xff1a;[2502.06855] Self-Supervised Prompt Optimization 仓库&#xff1a;GitHub - Airmomo/SPO: SPO | Self-Supervised Prompt Optimization 自监督提示优化&#xff08;SPO&#xff09; 创新点 成对比较评估 输出指导优化 全文介绍 背景 随着大语言模型…

AI-Ollama本地大语言模型运行框架与Ollama javascript接入

1.Ollama Ollama 是一个开源的大型语言模型&#xff08;LLM&#xff09;平台&#xff0c;旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。 Ollama 提供了一个简单的方式来加载和使用各种预训练的语言模型&#xff0c;支持文本生成、翻译、代码编写、问答等多种…

分布式多卡训练(DDP)踩坑

多卡训练最近在跑yolov10版本的RT-DETR&#xff0c;用来进行目标检测。 单卡训练语句&#xff08;正常运行&#xff09;&#xff1a; python main.py多卡训练语句&#xff1a; 需要通过torch.distributed.launch来启动&#xff0c;一般是单节点&#xff0c;其中CUDA_VISIBLE…

LLM大型语言模型(一)

1. 什么是 LLM&#xff1f; LLM&#xff08;大型语言模型&#xff09;是一种神经网络&#xff0c;专门用于理解、生成并对人类文本作出响应。这些模型是深度神经网络&#xff0c;通常训练于海量文本数据上&#xff0c;有时甚至覆盖了整个互联网的公开文本。 LLM 中的 “大” …

蓝桥杯备考:动态规划dp入门题目之数字三角形

依然是按照动态规划dp的顺序来 step1&#xff1a;定义状态表示 f[i][j]表示的是到,j这个坐标的结点时的最大权值 step2: 定义状态方程 i,j坐标可能是从i-1 j-1 到i,j 也可能是从i-1 j到 i,j 所以状态方程应该是 f[i][j] max(f[i-1][j-1],f[i-1][j]) a[i][j] step3:初始化…

HarmonyOS NEXT开发进阶(十一):应用层架构介绍

文章目录 一、前言二、应用与应用程序包三、应用的多Module设计机制四、 Module类型五、Stage模型应用程序包结构六、拓展阅读 一、前言 在应用模型章节&#xff0c;可以看到主推的Stage模型中&#xff0c;多个应用组件共享同一个ArkTS引擎实例&#xff1b;应用组件之间可以方…

deepseek+mermaid【自动生成流程图】

成果&#xff1a; 第一步打开deepseek官网(或百度版&#xff08;更快一点&#xff09;)&#xff1a; 百度AI搜索 - 办公学习一站解决 第二步&#xff0c;生成对应的Mermaid流程图&#xff1a; 丢给deepseek代码&#xff0c;或题目要求 生成mermaid代码 第三步将代码复制到me…

Solon AI —— RAG

说明 当前大模型与外部打交道的方式有两种&#xff0c;一种是 Prompt&#xff0c;一种是 Fuction Call。在 Prompt 方面&#xff0c;应用系统可以通过 Prompt 模版和补充上下文的方式&#xff0c;调整用户输入的提示语&#xff0c;使得大模型生成的回答更加准确。 RAG RAG &…

STM32——USART—串口发送

目录 一&#xff1a;USART简介 二&#xff1a;初始化USART 1.开启时钟 2.代码 三&#xff1a;USART发送数据 1.USART发送数据函数 2.获取标志位的状态 3.代码 4.在main.c内调用 5.串口调试 1.串口选择要与设备管理器中的端口保持一致 2.波特率、停止位等要与前面…

基于SpringBoot的在线骑行网站的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

通义万相2.1:开启视频生成新时代

文章摘要&#xff1a;通义万相 2.1 是一款在人工智能视频生成领域具有里程碑意义的工具&#xff0c;它通过核心技术的升级和创新&#xff0c;为创作者提供了更强大、更智能的创作能力。本文详细介绍了通义万相 2.1 的背景、核心技术、功能特性、性能评测、用户反馈以及应用场景…

3.3.2 Proteus第一个仿真图

文章目录 文章介绍0 效果图1 新建“点灯”项目2 添加元器件3 元器件布局接线4 补充 文章介绍 本文介绍&#xff1a;使用Proteus仿真软件画第一个仿真图 0 效果图 1 新建“点灯”项目 修改项目名称和路径&#xff0c;之后一直点“下一步”直到完成 2 添加元器件 点击元…

极狐GitLab 正式发布安全版本17.9.1、17.8.4、17.7.6

本分分享极狐GitLab 补丁版本 17.9.1、17.8.4、17.7.6 的详细内容。这几个版本包含重要的缺陷和安全修复代码&#xff0c;我们强烈建议所有私有化部署用户应该立即升级到上述的某一个版本。对于极狐GitLab SaaS&#xff0c;技术团队已经进行了升级&#xff0c;无需用户采取任何…

QT——对象树

在上一篇博客我们已经学会了QT的坏境安装以及打印一个hello world&#xff0c;但是如果有细心的朋友看了代码&#xff0c;就会发现有一个严重的问题&#xff0c;从C语法看来存在内存泄漏。 上面的代码实际上并没有发送内存泄漏&#xff0c;是不是觉得有点奇怪&#xff1f;大家有…