16-ArrayList和LinkedList的区别

1.1、作用

  • ArrayList和LinkedList都是实现了List接口的容器类,用于存储一系列的对象引用。它们可以对元素的增删改查进行操作
  • 对于ArrayList,它在集合的末尾删除或添加元素所用的时间是一致的,但是 在列表中间的部分添加或删除时所用的时间就会大大增加;但是它在根据索引查找元素的时候速度很快
  • 对于LinkedList, 它在插入、删除集合中任何位置的元素所花费的时间都是一样的,但是它查询一个元素的时候却比较慢

1.2、区别

  • ①、ArrayList是实现了 基于动态数组的数据结构,LinkedList是 基于链表结构
  • ②、对于 随机访问的get和set方法,ArrayList要 优于LinkedList,因为LinkedList要移动指针
  • ③、对于 新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据

1.3、缺点

  • ①、对于ArrayList和LinkedList而言,在 列表末尾增加一个元素所花的开销都是固定的。ArrayList主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配,而对LinkedList而言,这个开销是统一的,分配一个内存Entry对象
  • ②、在ArrayList集合中 添加或者删除一个元素时,当前索引后面的所有元素都会被移动,而LinkedList集合中 添加或者删除一个元素的开销是固定的
  • ③、LikedList集合不支持 高效的随机访问(RandomAccess),因为可能产生二次项的行为
  • ④、ArrayList的空间浪费主要体现在 List列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在 *它的每一个元素都需要消耗相当的空间

posted @
2022-08-09 21:43 OnlyOnYourself-Lzw

阅读(
16

) 评论(
) 编辑

Original: https://www.cnblogs.com/OnlyOnYourself-lzw/p/16567722.html
Author: OnlyOnYourself-Lzw
Title: 16-ArrayList和LinkedList的区别

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581577/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Redis采用不同内存分配器碎片率对比

    我们知道Redis并没有自己实现内存池,没有在标准的系统内存分配器上再加上自己的东西。所以系统内存分配器的性能及碎片率会对Redis造成一些性能上的影响。在Redis的 zmall…

    Linux 2023年5月28日
    091
  • sed与awk命令

    1.1 sed命令语法 在看单个命令以前,需要回顾一下关于所有sed命令的两点语法。在上一个章中,我们介绍了其大部分内容。行地址对于任何命令都是可选的。它可以使一个模式,被描述为由…

    Linux 2023年6月7日
    0110
  • centos 8及以上安装mysql 8.0

    本文适用于centos 8及以上安装mysql 8.0,整体耗时20分钟内,不需要FQ 1.环境先搞好 systemctl stop firewalld //关闭防火墙 syste…

    Linux 2023年6月7日
    0109
  • Kubernetes后台数据库etcd:安装部署etcd集群,数据备份与恢复

    服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64…

    Linux 2023年6月7日
    092
  • stat命令的实现

    任务详情 学习使用stat(1),并用C语言实现 提交学习stat(1)的截图 man -k ,grep -r的使用 伪代码 产品代码 mystate.c,提交码云链接 测试代码,…

    Linux 2023年5月27日
    096
  • 用powershell实现,管理github自动化

    用powershell实现,管理github自动化 搜索关键字如下:PowerShellForGitHub powershell 传教士 原创文章。始于 2021-02-04 允许…

    Linux 2023年6月14日
    085
  • 2-第一个Django程序

    第一个Django程序 从本章节开始将通过实现一个投票应用程序,来让用户逐步的了解Django。这个程序由两步分组成: 公共站点,允许用户访问进行投票,和查看投票。 站点管理,允许…

    Linux 2023年6月7日
    0112
  • Xbox分辨率突然变成640p

    今天XBox突然抽风还是发什么神经,输出分辨率突然变得非常模糊。一开始以为是HDMI线出现问题,后来用一条新的也是一样,所以就怀疑系统出了什么幺蛾子。 进入【电视和显示选项】——【…

    Linux 2023年6月13日
    0129
  • Map&Promise

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &lt…

    Linux 2023年6月13日
    0110
  • MySQL-报错:Error when bootstrapping CMake:

    在进行MySQL的源码安装的时候,系统上找不到合适的C编译器,GCC忘了装,莫慌,直接 yum命令装上gcc,还有gcc-C++没装的话后面也会提示错误,一起装上,,, [root…

    Linux 2023年6月13日
    0104
  • 没学习的恐惧

    已经三个月没有接触新知识,每次上线之后就有一些bug,觉得自己作为一个点点点的测试很失败。我很迷茫,我都不知道自己一天是如何过的,反正就觉得时间过的很快,而且发现什么事都没做一天就…

    Linux 2023年6月8日
    094
  • redis 入门安装流程

    redis安装流程 安装linux的Redis [官网下载即可][ https://redis.io/download/ ] 一般会移动到opt目录下 mv redis-7.0.4…

    Linux 2023年6月7日
    0103
  • JDK8以上提高开发效率

    1 接口的默认方法和静态方法 1.1 接口中可以定义默认方法和静态方法。 默认方法使用default修饰,静态方法和默认方法可以多个; 静态方法通过接口直接调用,默认方法通过接口实…

    Linux 2023年6月13日
    0100
  • [Git系列] 前言

    Git 简介 Git 是一个重视速度的分布式版本控制和代码管理系统,最初是由 Linus Torvalds 为开发 Linux 内核而设计并开发的,是一款遵循二代 GUN 协议的免…

    Linux 2023年5月27日
    0145
  • 内网渗透测试:利用DCOM进行横向渗透——利用ExecuteShellCommand在做远程命令执行

    COM COM即组件对象模型(Component Object Model,COM) ,是基于 Windows 平台的一套组件对象接口标准,由一组构造规范和组件对象库组成。COM是…

    Linux 2023年5月28日
    086
  • 2020年12月-第02阶段-前端基础-品优购项目规范

    代码规范 1. 概述 欢迎使用品优购代码规范, 这个是我借鉴京东前端代码规范,组织的品优购内部规范。旨在增强团队开发协作、提高代码质量和打造开发基石的编码规范, 以下规范是团队基本…

    Linux 2023年6月8日
    0109
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球