当前位置: 首页 > article >正文

Java中,ArrayList和LinkedList区别区分,简洁

在Java中,ArrayList和LinkedList都是用来存储和管理数据的类

ArrayList是Java中的一个类,它实现了List接口,是一种基于动态数组实现的集合类
常用成员方法:
   ·构造方法:ArrayList()
   ·成员方法:add、remove、set、get、size
底层原理:
利用空参创建的集合,在底层创建一个默认长度为0的数组
添加第一个元素时,底层会创建一个新的长度为10的数组存满时,会扩容1.5倍
如果一次添加多个元素,1.5倍还放不下,则新创建数组的长度以实际为准
 

LinkedList是Java集合框架中的一个双向链表实现类,可以用来存储一组有序的元素。LinkedList本身多了很多直接操作首尾元素的特有API
常用成员方法

addFirst、addLast、getFirst、getLast、removeFirst、removeLast
底层原理:

底层数据结构是双链表,查询慢,增删快,但是如果操作的是首尾元素,速度也是极快的。
 

但它们在数据结构、性能和使用场景上有一些区别。

  1. 数据结构:

    ·ArrayList:基于动态数组实现。由于数组的连续存储特性,ArrayList在获取元素时速度较快,时间复杂度为O(1)。但是,在中间插入或删除元素时,由于数组的连续性,可能需要进行元素移动,所以时间复杂度为O(n)。

    ·LinkedList:基于双向链表实现。每个元素都是一个独立的对象,因此访问元素时需要从头节点开始遍历,所以时间复杂度为O(1)。在链表中间插入或删除元素时,只需修改相邻元素的引用,所以时间复杂度也为O(1)。

  2. 性能:

    ·在获取元素时,ArrayList通常比LinkedList更快。

    ·在插入和删除元素时,LinkedList通常比ArrayList更快。

  3. 使用场景:

    ·ArrayList:当你需要频繁地访问元素时,使用ArrayList更合适。例如,获取一个特定的元素或者对元素进行随机访问。

    ·LinkedList:当你需要频繁地在列表的开头或结尾插入或删除元素时,使用LinkedList更合适。例如,在队列中添加或删除元素。

总的来说,选择ArrayList还是LinkedList主要取决于你的使用场景。

如果你需要频繁地访问元素,那么ArrayList可能是更好的选择。

如果你需要频繁地在列表的开头或结尾插入或删除元素,那么LinkedList可能更适合你。


http://www.kler.cn/a/133271.html

相关文章:

  • CSP-X2024山东小学组T2:消灭怪兽
  • js像循环数组那样循环一个数字,Array.from()
  • vue2/vue3中使用的富文本编辑器vue-quill
  • 时钟之CSS+JS版
  • 使用--log-file保存pytest的运行日志
  • 【Three.js基础学习】22.New project structure
  • Navicat 基于 GaussDB 主备版的快速入门
  • 第七部分:Maven(项目管理工具)
  • Linux每日智囊-cat, more, less
  • 【DevOps】Git 图文详解(一):简介及基础概念
  • javascript选择器的封装,只需要写元素名或css类及id都可以选择到元素
  • pipeline jenkins流水线
  • Halcon (3):窗体常用语法使用
  • 无损音频播放软件 Colibri mac中文版特点介绍
  • 瑞吉外卖Day06
  • vue3-setup中如何通过ref调用子组件的函数
  • Vulkan渲染引擎开发教程 一、开发环境搭建
  • 二叉树最近公共祖先
  • 腾讯云服务器价格计算器真心好用,推荐给大家!
  • linux在非联网、无网络环境下,使用yumdownload、reportrack方法安装rpm包
  • oracle-buffer cache
  • Python调用企微机器人: 发送常用格式汇总
  • C++各种字符转换
  • 常用的软件架构设计模式
  • 【算法挨揍日记】day31——673. 最长递增子序列的个数、646. 最长数对链
  • python-opencv五种自动白平衡算法,附源码直接可用(均值、完美反射、灰度世界、动态阈值、基于图像分析的偏色检测及颜色校正)